0

大きなMySQLステートメントを実行するPythonプログラムがあります。次回Pythonプログラムを実行したときに結果がキャッシュされるように、Pythonプログラムが終了した後もキャッシュを保持するようにMySQLに指示するにはどうすればよいですか?

現在、Pythonスクリプトを実行するたびに、まったく同じクエリを実行していても、結果を取得するのに永遠に時間がかかります。私は自分のquery_cache_sizequery_cache_limitをすでに結果セットよりも大きくなるように設定しました。

4

1 に答える 1

0

残念ながら、特定のクエリ結果をキャッシュに保持するようにMySQLエンジンに指示するオプションはありません。自分で実装する必要があります。

クエリ結果を「キャッシュ」テーブルに保存できます(ただし、TEMPORARYこのようなテーブルは作成スレッドからのみアクセス可能であり、接続が閉じられるとドロップされるため、テーブルには保存できません)。

次にTRIGGERS、基になるテーブルを設定します。これにより、そのようなテーブルが更新されたときにキャッシュがクリアされます。または、キャッシュされたデータにを追加するだけTIMESTAMPで、任意の期間が経過すると廃止されたと見なすことができます。キャッシュからわずかに廃止されたデータを取得する余裕がある場合は、後者のオプションの方が安価です。

ただし、解決策は、クエリを高速化するために、クエリまたは構造を最適化する必要があることです。

[編集]

実際には、それを行うための(ねじれた)方法があります。query_cache_typeサーバーオプションを2に設定して、SQL_CACHEキーワードを使用するクエリのみがキャッシュされるようにすることができます。これにより、キャッシュするクエリを非常に細かく制御できます。をquery_cache_size使用してすべてのクエリのすべての結果を保持するのに十分な大きさにしSQL_CACHEます。そうすれば、上書きされることはありません。ただし、すべてのキャッシュを自分で管理する必要があります...

于 2012-06-16T17:37:48.110 に答える