2011-04-12 111 views
0

我們試圖將幾個Tb放入MySQL簇中,但不幸的是索引不適合內存。mysql集羣表已滿,解決方法?

有沒有辦法克服mysql的這個限制?

有沒有辦法在mysql進程範圍內並行操作?

我的數據有128個分區的MYisam內部有一個3D點:(id x y z idkey someblob)。由於內存限制,NDBCLuster無法加載數據。

索引越過idkey(這是預先計算的peano-hilbert鍵)。總行數約爲10^9。

謝謝阿爾曼。

編輯 我的設置是2個datanodes 2 mysqld一個mdm。 每個ndb具有4個內核的8Gb RAM。

整個系統有30Tb Raid6。
系統是linux Scientific LInux 6.0,集羣7.1是從源碼編譯的。

+0

操作系統/硬件設置?您收到的錯誤消息 - 如果您提供了這些消息,它會很有用。 – 2011-04-12 20:55:18

+0

錯誤消息在標題中:「表'foo'已滿」。 – 2012-09-24 20:50:11

回答

0

這聽起來像MySQL不適合該任務(對不起)。我會檢查東京暴君,也許MongoDB或任何其他分佈式鍵值存儲系統。還有專門的商業產品。

MongoDB是able to swap out some of it's indexes to the HD。我想你的問題是,MySQL不能這樣做(儘管我不是MySQL的人)。

+0

是的,我們可能碰到了mysql的限制。謝謝。 – Arman 2011-04-17 10:53:23

0

也許你可以嘗試修改你的config.ini文件。

DataMemory=15000M 
IndexMemory=2560M 

但是,如果兩個數值都過高,你會遇到這樣的錯誤: 無法使用,由於位圖頁missaligned!

所以我仍然試圖解決它。祝你好運。

0

我在加載數據庫表結構時遇到了同樣的問題。這意味着DataMemoryIndexMemory在這裏沒有幫助。 此外,表格數量沒有達到MaxNoOfTables的限制,所以它也不是問題。 我在這裏的解決方案是增加MaxNoOfOrderedIndexesMaxNoOfUniqueHashIndexes的值,這些值反映了羣集中可以擁有的最大索引數。因此,如果數據庫中有很多索引,請嘗試相應地增加這些變量。 當然,在更改生效後必須完成rolling restart