2013-12-17 33 views
2

我們有一個MySQL數據庫(OLD_DATA),其中許多分區表大小已超過100GB。爲了提高服務器性能,我們考慮創建並行數據庫(NEW_DATA)並開始在NEW_DATA中收集新數據。大型數據庫的MySQL內存使用情況

數據庫是MyISAM,服務器有96GB RAM。

在此之後,OLD_DATA將不被訪問。

此方法是否有助於提高RAM和CPU使用率方面的服務器性能? 將來自OLD_DATA的數據加載到內存中嗎?

+1

數據庫通常不會將整個數據庫一次加載到內存中。使用索引(和其他聚類技術)可以實現良好的算法選擇和數據訪問:即只在需要時纔讀取需要的內容。 – user2864740

+0

取決於您如何查詢新數據以及您有什麼索引設置。把它移動到一個新的桌子不會保證有更好的表現。你有很多內存,所以你應該能夠爲快速查詢構建好索引 –

+0

感謝您的意見。我同意索引和最佳查詢是至關重要的。但我正在尋找移動到一個新的數據庫,並在隔離舊的數據庫,以便舊的數據庫不會佔用內存。 – user1434805

回答

0

請提供SHOW CREATE TABLE。如果是的話,正如你所暗示的那樣,PARTITIONed,那麼我們需要把它分解到分析中。

一般情況下,如果「舊」行不再以任何方式訪問,它們不會受到傷害,也不需要做任何事情。請詳細說明您覺得「緩慢」的查詢,最好提供EXPLAIN SELECT

MyISAM緩存「key_buffer」中的索引塊;指數有多大?什麼是key_buffer_size設置爲?數據塊由操作系統緩存。

對於一個系統來說,數據集的大小與RAM相差很多,這是非常正常的。性能取決於數據集的「工作集」以及您如何主動查詢數據。你暗示「舊」行不被使用,因此不屬於「工作集」的一部分。另一方面,如果你有「表掃描」,整個表是工作集的一部分。我們很可能會建議如何將這些查詢更好地更改。