2011-12-25 1 views
10

MySQLを使用すると、SQL_CACHESQL_NO_CACHEのオプションを使用してselect文を作成することができます。これらのオプションは、クエリキャッシュ内のクエリ結果のキャッシュに影響します。しかし、どのクエリに対してSQL_CACHEオプションを使用する方が良いでしょうか?そのためにはSQL_NO_CACHE?それとも、それを一切使用しない方が良いでしょうか?SQL_CACHEとSQL_NO_CACHEを使用するMySQLのベストプラクティス

答えて

12

一般的に、これを使用する必要はありません。 SQL_CACHEは、クエリが既定でキャッシュされていない場合にのみ必要です。クエリは既定の構成です。 SQL_NO_CACHEは、特に結果セットが大きい場合に、特定のクエリが近い将来再び使用されないことがわかっている場合に役立ちます。目的は、キャッシュを乱雑にしないようにすることです。

+2

特にSQL_NO_CACHEに関しては、結果をキャッシュしても後で再利用するメリットが得られない場合に使用します。これを行うべき理由は、キャッシュされたが一度も使用されていないクエリが多数ある場合、キャッシュを無期限に管理するのに時間がかかるので、mySQLを遅くするからです。これは、古いエントリをフラッシュする時間がサイズとともに増加するため、人々が本当に大きなquery_cacheサイズを設定するときに特に顕著になります。そのため、mySQLのquery_cacheの動作を変更するオプション0,1,2があります。 – Ross

+0

@Michael、実際に運用サーバー用に推奨されるconfiguratinoは**クエリキャッシングをオフにすることです。 – Pacerier

+0

@Pacerierこれは実際の作業負荷によって異なります。 –

3

クエリ速度をデバッグするときにSQL_NO_CACHEを使用します。

+0

詳細を教えてください。 – Pacerier

+0

クエリをテストするときに、キャッシュからフェッチされずに実行時間を測定すると便利です。キャッシュからのフェッチはデータベースからのフェッチよりはるかに高速です。そのため、DBまたはキャッシュからの結果であるかどうかを知らずに結果を比較することは意味をなさない。 –

関連する問題