2012-04-06 33 views
1

我們使用MYSQL InnoDB引擎進行插入和更新操作,爲了提高查詢性能,我們正在考慮用Memory表來存儲最新的數據Ex。最近兩個月的數據。如何將MySQL InnoDB表數據同步到內存表

我們可以配置MySQL在服務器啓動時將數據導入到內存表,但實際的業務數據一直在更新,我們必須頻繁地將InnoDB表中的數據同步到Meomory表,但是我們無法每隔一段時間就重新啓動MySQL服務器我們想要同步數據的時間。

任何人都可以知道如何在不重新啓動MySQL的情況下同步數據嗎?

+0

聽起來像是一個複雜的解決方案。您是否首先嚐試調整MySQL以使用更多內存來緩存? – 2012-04-06 06:50:45

+0

是的,我已經分配了6G內存來支持MySQL內存表 – Scarlett 2012-04-06 06:55:32

回答

2

你通常會用trigger這樣做。我的第一個想法是分兩部分來完成。

1)在innodb表中創建插入,更新和刪除(如果發生的話)的觸發器,導致內存表中的相同更改。確保沒有邏輯依賴於從內存表中刪除了某些行,它將保留最近2個月,然後一些。

2)創建一個後臺作業來清除舊數據的內存表。如果你對它有很高的負擔,那麼考慮一個頻繁的工作,一次一小塊地啃過舊的行。

另一種解決方案是通過partition時間InnoDB表,然後確保你包括像where time > subdate(now(), interval 2 month)

+0

感謝您的快速響應和偉大的建議!我會嘗試你的兩個想法,並比較性能。 – Scarlett 2012-04-06 08:41:03

相關問題