SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
WordPress 
DB & Performance 
2014/08/30 
Takayuki Miyauchi 
初心者向け
自己紹介
• フリーランス 
• デジタルキューブの「め組」メンバー 
• WordPressとかAWSとか、最近はオープンデー 
タのコミュニティにも出没
デジタルキューブについて
• Amazon Web Service(AWS) 
コンサルティングパートナー 
• オープンソース大好き 
(WordPress、Nginx、CKAN …) 
• ほとんどのスタッフがリモートワーク 
(神戸、東京、新潟、福岡、仙台、和歌山 …)
今日のお話
• 初心者向けデータベースインデックス講座 
• WordPressで重くなりがちな処理 
• WordPressで重くなりがちなプラグインのパターン 
• 質問タイム
インデックス講座
インデックスを使いこなすと 
早くなるらしいぞ!
インデックスって? 
• 索引のこと。 
• 本で例えるとわかりやすいです。
偶然にも手元に本があるのでこれで説明!
この本の中からwp_headという単語がある 
ページを探すには2通りの方法があります。
巻末の索引を見て探す。
1ページずつ読んで探す。
• 索引を使ったほうが圧倒的に早い。 
• 索引を使えば、ページ数が増えても検索に必要 
な時間はほぼ同じ。 
超重要!
DBに置き換えると 
こうなります。
• インデックスを使ったほうが圧倒的に早い。 
• インデックスを使えば、レコード数が増えても 
検索に必要な時間はほぼ同じ。 
超重要!
このあたりの挙動はSQLの 
EXPLAINで確認できます。 
EXPLAIN SELECT * FROM wp_posts WHERE …
テスト用のテーブルに 
約3万2千件のレコードを放り込みました。 
CREATE TABLE item ( 
id INT PRIMARY KEY AUTO_INCREMENT, 
name1 VARCHAR(100), —— indexあり 
name2 VARCHAR(100), —— indexなし 
index(name1) 
);
以下のSQLは2つとも同じ結果が得られます。 
• select * from item where name1 = ‘item-1’; 
• select * from item where name2 = ‘item-1’; 
ただし `name1` はインデックスあり、 
`name2` はインデックスなしです。
mysql> select id from item where name1 = 'item-1'; 
+----+ 
| id | 
+----+ 
| 1 | 
+----+ 
1 row in set (0.00 sec)
でも負荷はまるで違う 
EXPLAINの結果表示される表の `rows` は、 
データを取得するために参照したレコードの数。
インデックスを使用しない場合、 
必要な行がたったの1行でも、 
データベースはすべてのレコードセットを参照します! 
レコードが増えるほど重くなる!
そんなわけで 
インデックスは超大事
WordPressで 
重くなりがちな処理
インデックスが 
効いてないクエリー 
(例)
みんな大好き 
カスタムフィールド! 
meta_key meta_value
meta_valueにはインデックスが設定されてい 
ないので、meta_valueを使った検索は重い。 
$args = array( 
'post_type' => 'product', 
'meta_query' => array( 
array( 
'key' => 'featured', 
'value' => 'yes', 
) 
) 
); 
$postslist = get_posts( $args );
同じ理由でmeta_valueを使った 
並べ替えも重い! 
$args = array( 
'post_type' => 'product', 
'orderby' => 'meta_value', 
'meta_key' => ‘age', 
); 
$postslist = get_posts( $args );
その他にも 
• 頻繁に書込するのは重くなる。 
• 大きなデータを保存すると重くなる。 
• Transient APIは使い過ぎに注意。 
• いろいろなテーマやプラグインのインストールとアンイン 
ストールを繰り返すと、Optionsが肥大化して重くなる。
重くなりがちな 
プラグインのパターン
たとえば人気ランキング系 
プラグイン 
• 人気ランキングを生成するにはページにアクセスがあるた 
びに、それをデータベースに保存する必要があるはず。 
• 月別、週別など、柔軟にランキングを生成するには、サイ 
トにアクセスがあるたびにページの情報と日付をデータベー 
スに保存しているはず。 
• 1日1,000PVあるサイトなら毎日1,000行のレコードがデー 
タベースに追加されることになる。。。
このプラグインは 
Google Analytics APIを使ってるので安心! 
http://wordpress.org/plugins/simple-ga-ranking/ 
作者: @horike37さん
言わずと知れたJetpackにも 
人気ランキング機能があります。
その他にも 
• Eコマース系のプラグインなどは、meta_valueによる検索 
を多用してる場合があるので、それらのプラグインを使う 
場合は要注意。 
• 他にもいろいろあるはず。
プラグインを使う場合には、 
想像力が大事! 
これってDBに頻繁に 
書き込みするのかな? 
大きなデータを 
保存してないかな? 
このファイルは 
どこに保存されるの? 
どのテーブルに 
保存するのかな? 
どんなSQLを 
実行してるの?
遅いSQLの見つけ方
Debug Bar 
https://wordpress.org/plugins/debug-bar/ 
開発者が豪華!
Debug Barを使うときは以下の設定を追加 
define( 'WP_DEBUG', true ); 
define( 'SAVEQUERIES', true );
SQLの履歴が簡単に確認できます!
http://knowledge.sakura.ad.jp/tech/283/
そうは言ってもどうしても 
使いたい時がある!
キャッシュ系プラグインではもっとも簡単で高速&安心
DBにPerconaを使用 
リバースプロキシを有効化すればさらに高速
最後に宣伝
「WordPressプラグイン開発のバイブル」 
日本ではじめての開発者に 
フォーカスした書籍です。
ありがとうございました!

Contenu connexe

Tendances

Datastore masakari 1_aurora_169_publication
Datastore masakari 1_aurora_169_publicationDatastore masakari 1_aurora_169_publication
Datastore masakari 1_aurora_169_publication
宗 大栗
 
はてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよはてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよ
Tsukasa Oishi
 
勉強会 Vol3【ドメインとは】
勉強会 Vol3【ドメインとは】勉強会 Vol3【ドメインとは】
勉強会 Vol3【ドメインとは】
chimoto
 

Tendances (20)

Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
LESS使ってますか?
LESS使ってますか?LESS使ってますか?
LESS使ってますか?
 
ハンズのDynamoDBクラウドパターン
ハンズのDynamoDBクラウドパターンハンズのDynamoDBクラウドパターン
ハンズのDynamoDBクラウドパターン
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips
 
今日はMongoDBの話はしない
今日はMongoDBの話はしない今日はMongoDBの話はしない
今日はMongoDBの話はしない
 
子テーマを使ったサイト制作
子テーマを使ったサイト制作子テーマを使ったサイト制作
子テーマを使ったサイト制作
 
さくらのクラウドアップデート情報2016年7月版
さくらのクラウドアップデート情報2016年7月版さくらのクラウドアップデート情報2016年7月版
さくらのクラウドアップデート情報2016年7月版
 
Web Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker APIWeb Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker API
 
redashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレやredashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレや
 
Aws of the_weekend_hobby
Aws of the_weekend_hobbyAws of the_weekend_hobby
Aws of the_weekend_hobby
 
Datastore masakari 1_aurora_169_publication
Datastore masakari 1_aurora_169_publicationDatastore masakari 1_aurora_169_publication
Datastore masakari 1_aurora_169_publication
 
はてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよはてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよ
 
RESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼうRESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼう
 
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!
 
八王子
八王子八王子
八王子
 
WordPress Cloud Design Pattern
WordPress  Cloud Design PatternWordPress  Cloud Design Pattern
WordPress Cloud Design Pattern
 
勉強会 Vol2【SSL証明書とは】
勉強会 Vol2【SSL証明書とは】勉強会 Vol2【SSL証明書とは】
勉強会 Vol2【SSL証明書とは】
 
勉強会 Vol1 『ホスティングとは?』
勉強会 Vol1 『ホスティングとは?』勉強会 Vol1 『ホスティングとは?』
勉強会 Vol1 『ホスティングとは?』
 
勉強会 Vol3【ドメインとは】
勉強会 Vol3【ドメインとは】勉強会 Vol3【ドメインとは】
勉強会 Vol3【ドメインとは】
 

Similaire à 初心者向けWordPress DB & Performance

4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座
Shinichi Nishikawa
 
SciVerse ScienceDirect training 201103
SciVerse ScienceDirect training 201103SciVerse ScienceDirect training 201103
SciVerse ScienceDirect training 201103
tsuneyoshi
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
Hidekazu Ishikawa
 
2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め
2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め
2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め
Serverworks Co.,Ltd.
 

Similaire à 初心者向けWordPress DB & Performance (20)

サーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみたサーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみた
 
4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座4時間まったりWordPressテーマ作成講座
4時間まったりWordPressテーマ作成講座
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
 
read parse-css
read parse-cssread parse-css
read parse-css
 
UnderScoreとbootstrapとsassでword pressのテーマをつくろう
 UnderScoreとbootstrapとsassでword pressのテーマをつくろう UnderScoreとbootstrapとsassでword pressのテーマをつくろう
UnderScoreとbootstrapとsassでword pressのテーマをつくろう
 
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
 
SciVerse ScienceDirect training 201103
SciVerse ScienceDirect training 201103SciVerse ScienceDirect training 201103
SciVerse ScienceDirect training 201103
 
MySQL
MySQLMySQL
MySQL
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め
2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め
2012年12月 JAWS-UG 東京 AWS Storage Gateway事始め
 
WordPressでCSSプリプロセッサ入門
WordPressでCSSプリプロセッサ入門WordPressでCSSプリプロセッサ入門
WordPressでCSSプリプロセッサ入門
 
Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
AWS小ネタ集
AWS小ネタ集AWS小ネタ集
AWS小ネタ集
 
Parseでちゃんとアプリを作るコツ
Parseでちゃんとアプリを作るコツParseでちゃんとアプリを作るコツ
Parseでちゃんとアプリを作るコツ
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
基礎からのEBS
基礎からのEBS基礎からのEBS
基礎からのEBS
 
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
AWS初心者向けWebinar 失敗例を成功に変える AWSアンチパターンのご紹介
 

Plus de Takayuki Miyauchi

VCCW - Vagrant based WordPress development environment
VCCW - Vagrant based WordPress development environmentVCCW - Vagrant based WordPress development environment
VCCW - Vagrant based WordPress development environment
Takayuki Miyauchi
 

Plus de Takayuki Miyauchi (20)

オープンソースによるイノベーションの継続
オープンソースによるイノベーションの継続オープンソースによるイノベーションの継続
オープンソースによるイノベーションの継続
 
I love Automation
I love AutomationI love Automation
I love Automation
 
え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?え?まだMAMPで消耗してんの?
え?まだMAMPで消耗してんの?
 
WordPress on HHVM + Hack
WordPress on HHVM + HackWordPress on HHVM + Hack
WordPress on HHVM + Hack
 
オープンソース & オープンデータ
オープンソース & オープンデータオープンソース & オープンデータ
オープンソース & オープンデータ
 
VCCW - Vagrant based WordPress development environment
VCCW - Vagrant based WordPress development environmentVCCW - Vagrant based WordPress development environment
VCCW - Vagrant based WordPress development environment
 
WordPress開発の最新事情
WordPress開発の最新事情WordPress開発の最新事情
WordPress開発の最新事情
 
Cybozu Kintone x WordPress
Cybozu Kintone x WordPressCybozu Kintone x WordPress
Cybozu Kintone x WordPress
 
WordPressプラグインを公開しよう!
WordPressプラグインを公開しよう!WordPressプラグインを公開しよう!
WordPressプラグインを公開しよう!
 
WordPress Meetup at HUBBA Thailand
WordPress Meetup at HUBBA ThailandWordPress Meetup at HUBBA Thailand
WordPress Meetup at HUBBA Thailand
 
JAWS-UG Kansai 特別編 AWSがあるとき。ないとき。
JAWS-UG Kansai 特別編 AWSがあるとき。ないとき。JAWS-UG Kansai 特別編 AWSがあるとき。ないとき。
JAWS-UG Kansai 特別編 AWSがあるとき。ないとき。
 
AWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリAWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリ
 
Ckan + AWS
Ckan + AWSCkan + AWS
Ckan + AWS
 
BookPress開発チームから見た 電子書籍の世界
BookPress開発チームから見た 電子書籍の世界BookPress開発チームから見た 電子書籍の世界
BookPress開発チームから見た 電子書籍の世界
 
WordBench Osaka 春の大翻訳祭り
WordBench Osaka 春の大翻訳祭りWordBench Osaka 春の大翻訳祭り
WordBench Osaka 春の大翻訳祭り
 
アプリケーションプラットホームとしてのWordPress
アプリケーションプラットホームとしてのWordPressアプリケーションプラットホームとしてのWordPress
アプリケーションプラットホームとしてのWordPress
 
WordPressで電子書籍
WordPressで電子書籍WordPressで電子書籍
WordPressで電子書籍
 
信頼性が高くハイパフォーマンスなテーマ開発テクニックでライバルに差をつけろ!
信頼性が高くハイパフォーマンスなテーマ開発テクニックでライバルに差をつけろ!信頼性が高くハイパフォーマンスなテーマ開発テクニックでライバルに差をつけろ!
信頼性が高くハイパフォーマンスなテーマ開発テクニックでライバルに差をつけろ!
 
WP Boosterの裏側
WP Boosterの裏側WP Boosterの裏側
WP Boosterの裏側
 
PHP-Ninjaの裏側
PHP-Ninjaの裏側PHP-Ninjaの裏側
PHP-Ninjaの裏側
 

Dernier

Dernier (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

初心者向けWordPress DB & Performance