我有一個執行大型MySQL語句的Python程序。即使在Python程序終止後,我如何告訴MySQL保留緩存,以便下次運行Python程序時結果將被緩存?跨會話保留MySQL緩存
現在,每次運行Python腳本時,即使運行完全相同的查詢,也需要永久檢索結果。我已將query_cache_size
和query_cache_limit
設置爲大於結果集。
我有一個執行大型MySQL語句的Python程序。即使在Python程序終止後,我如何告訴MySQL保留緩存,以便下次運行Python程序時結果將被緩存?跨會話保留MySQL緩存
現在,每次運行Python腳本時,即使運行完全相同的查詢,也需要永久檢索結果。我已將query_cache_size
和query_cache_limit
設置爲大於結果集。
不幸的是,沒有辦法指示MySQL引擎將一些特定的查詢結果保存在緩存中。你需要自己實現一個。
您可以將查詢結果保存在「緩存」表(但不包含在TEMPORARY
表中,因爲這些表只能從創建線程訪問,並在連接關閉時丟棄)。
然後您將設置基礎表,當任何這樣的表被更新這將清除緩存上TRIGGERS
。或者,您可以簡單地將TIMESTAMP
添加到緩存的數據中,並在任意一段時間後認爲它已過時。如果你能夠從緩存中獲得稍微過時的數據,後一種選擇更便宜。
然而,該解決方案可能是您需要優化查詢或你的結構,以加快查詢。
實際上,有一種(扭曲)的方式來做到這一點。你可以使用關鍵字SQL_CACHE
緩存設置query_cache_type
服務器選項2個,這樣只有查詢。這可以很好地控制緩存哪些查詢。讓你的query_cache_size
大到足以容納使用SQL_CACHE
每個查詢的每一個結果,你一定沒有人會被覆蓋。但你必須管理所有的緩存自己......
您應該加載一個臨時表與計算結果,並用它來代替,在一定條件下 – Sebas
http://dev.mysql.com/doc/refman/5.1/en /query-cache-in-select.html您是否使用SELECT指定了SQL_CACHE? –