MySQLでいくつかのクエリの速度をテストしています。データベースがこれらのクエリをキャッシュしているため、これらのクエリの速度をテストするときに信頼できる結果を得ることが難しくなっています。
クエリのキャッシュを無効にする方法はありますか?
システム:Linux Webホスティング上のMySQL 4、PHPMyAdminにアクセスできます。
ありがとう
MySQLでいくつかのクエリの速度をテストしています。データベースがこれらのクエリをキャッシュしているため、これらのクエリの速度をテストするときに信頼できる結果を得ることが難しくなっています。
クエリのキャッシュを無効にする方法はありますか?
システム:Linux Webホスティング上のMySQL 4、PHPMyAdminにアクセスできます。
ありがとう
回答:
クエリでSQL_NO_CACHE(MySQL 5.7)オプションを使用してみてください。(MySQL 5.6ユーザーはこちらをクリックしてください)
例えば。
SELECT SQL_NO_CACHE * FROM TABLE
これによりMySQLは結果のキャッシュを停止しますが、他のOSおよびディスクキャッシュもパフォーマンスに影響を与える可能性があることに注意してください。これらは回避するのが難しいです。
現在の日付/時刻を参照すると、その選択に対するクエリキャッシュが無効になります。
SELECT *,NOW() FROM TABLE
「MySQLクエリキャッシュの使用に関する前提条件と注意事項」を参照してください。@ http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html
設定オプションもあります:query_cache_size = 0
サーバーの起動時にクエリキャッシュを無効にするには、query_cache_sizeシステム変数を0に設定します。クエリキャッシュコードを無効にすることで、顕著なオーバーヘッドはありません。MySQLをソースからビルドする場合、-without-query-cacheオプションでconfigureを呼び出すことにより、クエリキャッシュ機能をサーバーから完全に除外できます。
http://dev.mysql.com/doc/refman/5.1/en/query-cache.htmlを参照してください
followコマンドを実行してクエリキャッシュをリセットすることもできます。
RESET QUERY CACHE
クエリ内でユーザー定義変数を使用すると、クエリがキャッシュ不可能になります。私はそれを使用するよりもはるかに良い指標を見つけましたSQL_NO_CACHE
。ただし、変数の設定がパフォーマンスに重大な影響を与えない場所に変数を配置する必要があります。
SELECT t.*
FROM thetable t, (SELECT @a:=NULL) as init;
SQL_NO_CACHE
。」どうして?明示的なキーワードが主張していることを実行していない場合を除き、明示的なキーワードに対してあいまいなハックを使用するには、かなり強力なケースが必要と思われます。