2012-05-12 11 views
2

私はアプリケーション用のMySQLデータベースを持っていますが、レコードの応答時間が増えたので、私のデータベースでmysql querycacheを有効にすることを考えました。 問題は、メインマシンを頻繁に再起動して、クエリキャッシュが常に0になることです。この問題を処理する方法はありますか?mysql query cache

答えて

2

レコードの数に応じてクエリ時間が増えている場合は、テーブルインデックスを評価する必要があります。私は、低速クエリログを有効にして、実行速度の遅いクエリに対して説明を実行して、インデックスをどこに配置するかを判断することをお勧めします。また、ランダムにデータベースを再起動して根本的な原因を解決してください。

+0

にしてください。ありがとう、私はテーブルインデックスを評価する必要がありますが、私は "私たちはしばしばメインマシンを再起動します"という意味は、作業後私たちはアプリケーションがスタンドアロンのものであるmechineのcozをシャットダウンする必要があります ...そうです... mysqlのクエリキャッシュを有効にする任意のポイントはありますか?そのマシン上で、私たちは翌日にそれを切り捨てた後にします。mysql_query_cacheは0 –

+0

まあ、それに依存します。 1日に1回複数のクエリを実行する場合でも、クエリキャッシュを有効にすると効果があります。すべてのクエリが一意であれば、おそらくそうではありません。 – Daan

+0

遅い実行中のクエリを分析し、適切な場所にインデックスを適用して不適切なクエリを書き直すことで問題を解決してください。 Mysqlのクエリキャッシュはあまりインテリジェントではなく、動的クエリやトランザクションクエリには役立ちません。決して動的クエリを実行しない場合は、以下のようにキャッシュを温めてみてください。私は、クエリキャッシュを持っていることに反対しているわけではありませんが、それは確かに望ましいことですが、クエリキャッシュだけでは、低速の実行クエリが本質的に非動的でない限り、問題を解決できない場合があります。 –

1

起動時間が長くても気にしない場合は、起動時にウォームアップを試すことができると思います...クエリを別のファイルに入れたり、selectsの束を実行するストアドプロシージャを作成してinit_fileのパラメータをmy.cnf