WordPress のデータベースチューニング
WordPress サイトを高速化したい場合のノウハウ、という話です。 高速化にはいろいろ要素があって話が発散するので、とりあえずデータベースについて。
まず最初に。 特にレンタルサーバで表示速度が遅い場合は、大抵は MySQL の負荷だと思います。 極端な過負荷の場合は、ほぼ手が出ません。 この場合は潔くあきらめましょう。。(笑)
ここからは、ある程度速い MySQL でもうちょっと速くしたい場合の話。 といっても、ちゃんと検証したわけではないのでどの程度効果があるか分かりません。 まぁちょっとしたネタってことで。 システム開発の世界では、この手の高速化のことをパフォーマンスチューニングといいますが、機能を削らず、処理の見直しや環境の変更を行い高速化を行う手法です。
まず最初は MySQL のクエリーキャッシュから。
これは、おおざっぱにいえば、よくある問い合わせを覚えておき、次の要求に対しては実際に検索せずに前の検索結果をそのまま返すという技術です。 もちろん、UPDATE や INSERT があった場合は、この検索結果は破棄するといった処理がはいります。
WordPress のデータベース動作に関しては、ほぼ SELECT だけ。(みんながサイトを見たとき) 更新はブログマスターが記事を書いたり、読者がコメントをしたときなどのごくごく限られた場合です。 ということは、このクエリーキャッシュが思う存分効果を発揮するわけです。
実はぼくも前から気になっていたのですが、 2.0 系ではエントリを表示する際の SQL に「$now」という条件が使われています。 今の時刻を検索条件にして、それより前を表示する。(要は未来日投稿を表示しない) みないな SQL なのですが、こういう SQL だとクエリーキャッシュが対応できません。
おわかりのとおり、「今より前」なので、SQL を発行するたびに条件が変わってしまうからです。
WordPress’ post queries always ask for posts with post_date_gmt < = '$now' where $now is set to the current time, to prevent posts in the future from showing up. This means that $now changes with each page load. For high volume MySQL sites, the system administrator might turn on MySQL’s qcache, in order to cache some SQL queries. The problem with $now is that it changes each time, so the query is never exactly the same again, and the cache doesn’t help.
ということで、2.0 系に関しては発行する SQL をのっとってキャッシュしやすいように書き換えてくれるプラグインもあるようです。 ただ、共有 MySQL サーバ場合のクエリーキャッシュがどのように分配されるのかぼくは知りません。。 なので効果も分かりません。 MySQL に詳しい方教えてください… 🙂
ちなみに、2.1 系はこのクエリーを使っていません。 wp-cron で真の未来日投稿ができるようになったので、処理から全てはずされました。
では、次はインデックス。
データベースで検索をかける場合、基本的に検索対象は小さければ小さいほど速くなります。 データが多い場合はもちろんどんどん遅くなっていくわけですが、これを改善させようというデータベース技術にインデックスというのがあります。 事前に対象に索引を作っておき高速に検索をしようというものです。
WordPress でも標準でいくつかインデックスはってあるんですが、もーちょっとはれないかな、と思って調べてみたところやっている方がいました。
ドイツ語なのでよく読めないのですが、 PHP をみるとインデックスはっている部分がみえました。 ためしてないのであれですが、サイトによっては高速化できるかもしれません。(DB 操作はおっかないので、自己責任で…)
というわけで、データベースチューニングの話でした。(ぼくは専門じゃないので参考までに)
—
人間はなぜ、かくも速さを追求するのか。 人生が倍の時間だったらいまの倍の時間、待てるか、それでもなお追い求めるのか。 遺伝子に聞いてみたいところです。
26 Comments
Trackback
Comment
-
From: おで(Odyssey) - 2007/4/28 Saturday (Comment)
基本的に重くなってる原因がスパムボットのせいっぽいので、
コメントとトラバを塞げば、ぐぐっと軽くなる気がするのですが
イッテハイケナイコトを言ったような気がします(;’∇’)
-
From: ひろまさ - 2007/4/28 Saturday (Comment)
DB 過負荷はチューニングの世界ではもうどうしょうもないですね。 まずは正常に動いていないとだめです。
ただいま”Database Tuning”でインデックスはってみました。
> 24 queries. 0.317 seconds.
1エントリ表示ならコンスタントに 0.3 ~ 0.4 秒台になったー。
時間帯のせいかもしれませんが、もしかするとここくらいのデータ量でもインデックスはると速くなるかもしれないです。
# ちなみに、もしやってみる方はよく readme 読んでからやってください。 おかしくなってもこればかりはうまく手助けできません。。
> If you use the plugin you should know what you are doing. You have to have the necessary database knowledge.
-
From: yutaka - 2007/4/28 Saturday (Comment)
ううっ、そそられるなぁ。こういうエントリー:mrgreen:
危険な香りもするけど…..
-
From: Mie - 2007/4/28 Saturday (Comment)
そそられる感覚だけ楽しんでおくことに。。
-
From: ひろまさ - 2007/4/29 Sunday (Comment)
あはは、みなさまお気をつけを・・・ 😎
-
From: aka - 2007/4/29 Sunday (Comment)
まずはDBに負荷をかけまくってロリポおじさんを泣かせようと思います。:razz:
-
From: ひろまさ - 2007/4/29 Sunday (Comment)
ロリポおじさんのくもった顔が夢に出ます。。。(笑
-
From: おで(Odyssey) - 2007/4/28 Saturday (Comment)
基本的に重くなってる原因がスパムボットのせいっぽいので、
コメントとトラバを塞げば、ぐぐっと軽くなる気がするのですが
イッテハイケナイコトを言ったような気がします(;’∇’) -
From: ひろまさ - 2007/4/28 Saturday (Comment)
DB 過負荷はチューニングの世界ではもうどうしょうもないですね。 まずは正常に動いていないとだめです。
ただいま”Database Tuning”でインデックスはってみました。
> 24 queries. 0.317 seconds.
1エントリ表示ならコンスタントに 0.3 ~ 0.4 秒台になったー。時間帯のせいかもしれませんが、もしかするとここくらいのデータ量でもインデックスはると速くなるかもしれないです。
# ちなみに、もしやってみる方はよく readme 読んでからやってください。 おかしくなってもこればかりはうまく手助けできません。。
> If you use the plugin you should know what you are doing. You have to have the necessary database knowledge.
-
From: yutaka - 2007/4/28 Saturday (Comment)
ううっ、そそられるなぁ。こういうエントリー:mrgreen:
危険な香りもするけど….. -
From: Mie - 2007/4/28 Saturday (Comment)
そそられる感覚だけ楽しんでおくことに。。
-
From: ひろまさ - 2007/4/29 Sunday (Comment)
あはは、みなさまお気をつけを・・・ 😎
-
From: aka - 2007/4/29 Sunday (Comment)
まずはDBに負荷をかけまくってロリポおじさんを泣かせようと思います。:razz:
-
From: ひろまさ - 2007/4/29 Sunday (Comment)
ロリポおじさんのくもった顔が夢に出ます。。。(笑
From: サーログ - 2007/4/30 Monday (Trackback)
WordPress 静的ページごとに表示を変化させるテンプレ…
WordPressのページIDを取得してページによって表示を変えようと格闘。 過… (more…)
[続きを読む]
From: ブライトリング スーパーオーシャン ブレス - 2021/11/22 Monday (Trackback)
ブライトリング スーパーオーシャン ブレス
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: ブルガリ 財布 ドンキ - 2021/11/22 Monday (Trackback)
ブルガリ 財布 ドンキ
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: www.Jpw128.com - 2021/11/22 Monday (Trackback)
http://www.Jpw128.com
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: ハミルトン島 雨 - 2021/11/22 Monday (Trackback)
ハミルトン島 雨
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: www.88kopi.com - 2021/11/22 Monday (Trackback)
http://www.88kopi.com
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: ハミルトン島 アイランドリゾート - 2021/11/22 Monday (Trackback)
ハミルトン島 アイランドリゾート
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: https://www.b2Kopi.com/product/detail.aspx-id=12368.htm - 2021/11/22 Monday (Trackback)
https://www.b2Kopi.com/product/detail.aspx-id=12368.htm
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: http://Linkytools.com/ - 2021/11/24 Wednesday (Trackback)
http://Linkytools.com/
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: http://myappmag.com/ - 2021/11/24 Wednesday (Trackback)
http://myappmag.com/
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: http://fewiki.jp - 2021/11/25 Thursday (Trackback)
http://fewiki.jp
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: ゼニス時計エルプリメロ中古 - 2021/11/26 Friday (Trackback)
ゼニス時計エルプリメロ中古
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: ウブロ スーパーコピー 優良店 見分け方 - 2021/11/28 Sunday (Trackback)
ウブロ スーパーコピー 優良店 見分け方
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: pda.catalog.school238.ru - 2021/11/29 Monday (Trackback)
pda.catalog.school238.ru
hiromasa.zone :o) » WordPress のデータベースチューニング
[続きを読む]
From: ロレックス 偽物 ばれる - 2022/1/1 Saturday (Trackback)
ロレックス 偽物 ばれる
blog topic
[続きを読む]
From: フランクミュラー zippo - 2022/7/30 Saturday (Trackback)
フランクミュラー zippo
blog topic
[続きを読む]
From: フランクミュラー カサブランカ 由来 - 2022/8/10 Wednesday (Trackback)
フランクミュラー カサブランカ 由来
blog topic
[続きを読む]
From: ロレックス デイトナ 6239 - 2022/9/14 Wednesday (Trackback)
ロレックス デイトナ 6239
blog topic
[続きを読む]
From: ロンジン 6922 - 2022/12/17 Saturday (Trackback)
ロンジン 6922
blog topic
[続きを読む]