2012-06-16 78 views
0

我有一個執行大型MySQL語句的Python程序。即使在Python程序終止後,我如何告訴MySQL保留緩存,以便下次運行Python程序時結果將被緩存?跨會話保留MySQL緩存

現在,每次運行Python腳本時,即使運行完全相同的查詢,也需要永久檢索結果。我已將query_cache_sizequery_cache_limit設置爲大於結果集。

+0

您應該加載一個臨時表與計算結果,並用它來代替,在一定條件下 – Sebas

+0

http://dev.mysql.com/doc/refman/5.1/en /query-cache-in-select.html您是否使用SELECT指定了SQL_CACHE? –

回答

0

不幸的是,沒有辦法指示MySQL引擎將一些特定的查詢結果保存在緩存中。你需要自己實現一個。

您可以將查詢結果保存在「緩存」表(但不包含在TEMPORARY表中,因爲這些表只能從創建線程訪問,並在連接關閉時丟棄)。

然後您將設置基礎表,當任何這樣的表被更新這將清除緩存上TRIGGERS。或者,您可以簡單地將TIMESTAMP添加到緩存的數據中,並在任意一段時間後認爲它已過時。如果你能夠從緩存中獲得稍微過時的數據,後一種選擇更便宜。

然而,該解決方案可能是您需要優化查詢或你的結構,以加快查詢。

實際上,有一種(扭曲)的方式來做到這一點。你可以使用關鍵字SQL_CACHE緩存設置query_cache_type服務器選項2個,這樣只有查詢。這可以很好地控制緩存哪些查詢。讓你的query_cache_size大到足以容納使用SQL_CACHE每個查詢的每一個結果,你一定沒有人會被覆蓋。但你必須管理所有的緩存自己......