Mysql
具有基於時間的過期的 MySQL 查詢記憶體
我們使用的數據庫具有讀寫密集型負載。一些讀取查詢很繁重。
不幸的是查詢記憶體不能被使用,因為它失效太快了。
我們想避免經典的 Memcached/MySQL 組合,以簡化架構並減少連接/延遲。
是否有在 MySQL 中添加“基於時間的記憶體”的策略?(理想情況下每個集合)
編輯:
- 每個查詢組都有不同的 TTL(從 5 秒到幾天)。
在回答這個問題時,我會假設你的數據庫都是 InnoDB。
查詢記憶體無法滿足您的要求。您想到的機制確實存在於 InnoDB 緩衝池中。
您應該嘗試以下內容:
這控制了數據和索引塊在緩衝池中保留的時間和長度
要在一段時間後釋放塊,您可以將innodb_old_blocks_pct改回 37
MySQL 無法做到這一點。當對該表進行任何更改以確保查詢記憶體響應始終正確時,使用該表的所有查詢記憶體條目都將失效。此行為無法更改。
根據您的數據,您可以將數據分成舊的或很少更改的表和更新的頻繁更改的表,這樣您就可以充分利用查詢記憶體。
另一種可能性是定期創建物化視圖。這種方法的實用性在很大程度上取決於數據和查詢,但如果你能讓它發揮作用,它就能很好地發揮作用。