MySQLクエリキャッシュを使用してWebサイトを高速化する
Webアプリケーションを高速化するための最善の方法の1つは、データベースでクエリキャッシングを有効にすることです。これにより、よく使用されるSQLクエリをメモリにキャッシュして、同じリクエストを行う次のページからほぼ瞬時にアクセスできます。.
この方法が非常に強力な理由は、Webアプリケーションに変更を加える必要がないということです。メモリを少し犠牲にするだけで済みます。これですべての問題を解決することはできませんが、絶対に害はありません。.
注:アプリケーションが頻繁にテーブルを更新すると、クエリキャッシュは常に消去され、これによるメリットはほとんど得られません。これは、WordPressブログのように、ほとんどデータベースに対して読み取りを行うアプリケーションにとって理想的です。共有ホスティングで実行している場合もこれは動作しません.
実行中のサーバーでキャッシングを有効にする
あなたがしたい最初のことはMySQLのあなたのインストールが実際に利用可能なクエリキャッシングサポートを持っていることを確認することです。ほとんどのディストリビューションでは可能ですが、とにかく確認する必要があります.
あなたのMySQLコンソールからこのコマンドを実行したいと思うでしょう。クエリキャッシングが利用可能かどうか教えてくれます。.
mysql> 'have_query_cache'のような変数を表示する。 + ------------------ + ------- + |変数名|値| + ------------------ + ------- + | have_query_cache |はい| +------------------+-------+
ほとんどのホスティングプロバイダはデフォルトでこれを有効にするつもりはないので、これをクエリキャッシュが実際に有効になっていることを意味すると誤解しないでください。不思議なことに、私のUbuntu Feistyのインストールではすでに有効になっています…
次に、クエリキャッシュが有効になっているかどうかを確認して確認する必要があります。複数の変数をチェックする必要があるので、変数query%をチェックすることで一度にすべての変数をチェックすることもできます。
mysql> 'query%'のような変数を表示する。 + ------------------------------ + --------- + |変数名|値| + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
これがリスト内の重要な項目とその意味です。
- query_cache_size - これはキャッシュのサイズ(バイト単位)です。この値を0に設定すると、事実上キャッシュが無効になります。.
- query_cache_type - クエリキャッシングをデフォルトで有効にするには、この値をONまたは1にする必要があります。.
- query_cache_limit - これはキャッシュされる最大サイズのクエリ(バイト)です。.
query_cache_sizeの値が0に設定されている場合、または単に変更したい場合は、値がバイト単位であることに留意しながら、次のコマンドを実行する必要があります。たとえば、キャッシュに8MBを割り当てたい場合は、1024 * 1024 * 8 = 8388608を値として使用します。.
SET GLOBAL query_cache_size = 8388608;
同様に、他のオプションも同じ構文で設定できます。
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
それでは、実際に動作しているかどうかはどうやってわかりますか。 SHOW STATUSコマンドを使用して、「Qc」で始まるすべての変数を取得して、フードの下で何が起こっているのかを調べることができます。.
mysql>ステータスのように表示 'Qc%'; + ------------------------- + -------- + |変数名|値| + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + 8行セット(0.00秒)
統計に、空きメモリがたくさん残っていることがわかります。サーバーに低めのプルーンがたくさん表示される場合は、この値を増やすことを検討する必要があるかもしれませんが、Webサーバーのクエリキャッシュにはあまり多くのメモリを費やす必要はありません。Apache、php、ruby、またはあなたが使っているものは何でも.
設定ファイルで有効にする
これらの変更をmysqlサーバーの再起動または再起動後も存続させるには、それらをMySQL用の/etc/mysql/my.cnf構成ファイルに追加する必要があります。インストール先の別の場所にある可能性があることに注意してください。.
sudoまたはrootモードでテキストエディタを使用してファイルを開き、それらの値がファイルに存在しない場合は追加します。存在する場合は、コメントを外します.
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576
クエリキャッシングを使用すると、Webアプリケーションの速度が大幅に向上する可能性があります。特に、アプリケーションが主に読み取りを行う場合はそうです。上記の方法を使用してステータスを監視し、時間の経過とともにどのように機能するかを確認します。.