2009-12-30 38 views
9

我想爲MySQL Cluster 6實現NDB集羣。我希望以最少的200萬條記錄來處理非常龐大的數據結構。實現MySQL NDB集羣有哪些限制?

我想知道是否有任何實施NDB集羣的限制。例如,RAM大小,數據庫數量或NDB羣集的數據庫大小。

回答

15

200萬個數據庫?我認爲你的意思是「行」。

無論如何,關於侷限性:要記住的最重要的事情之一是NDB/MySQL Cluster不是通用數據庫。最值得注意的是,加入操作,但也包括子查詢和範圍操作(查詢如:現在和一週前創建的訂單),可能會比你期望的慢得多。部分原因是數據分佈在多個節點上。儘管已經取得了一些改進,但Join的表現仍然非常令人失望。另一方面,如果你需要處理很多(最好是小的)併發事務(通常是通過主鍵進行單行更新/插入/刪除查找),並且你需要將所有的數據保存在內存中,那麼它可以是一個非常具有伸縮性和性能的解決方案。

你應該問自己爲什麼你想要羣集。如果你只是想要你現在擁有的普通數據庫,除了增加99,999%的可用性,那麼你可能會感到失望。當然,MySQL集羣可以爲您提供很好的可用性和正常運行時間,但是您的應用程序的工作負載可能不太適合這種情況。另外,您可以使用其他高可用性解決方案來增加傳統數據庫的正常運行時間。

BTW - 這裏的限制,按照文檔的列表:http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations.html

但是,不管你做什麼,嘗試集羣,看看它的對你有好處。 MySQL集羣不是「MySQL + 5 9」。當你嘗試時你會發現。

1

NDB集羣附帶兩種類型的存儲選項。

1.在內存中。 2.磁盤存儲。

NDB引入了內存數據存儲和版本7.4(MYSQL 5.6)以後開始支持磁盤存儲。

當前版本7.5(MySQL 5.7)支持磁盤存儲,在這種情況下,將不存在大小限制,因爲數據將駐留在磁盤中,並且限制取決於您可用的磁盤存儲空間。
磁盤存儲配置 - https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data-symlinks.html

在內存存儲在NDB集羣也相當成熟,你可以定義在管理節點config.ini文件的內存使用情況。 例子 - DataMemory值= 3072M IndexMemory = 384M

中的平均表

(取決於存儲在列中的數據)的總大小分貝應小於1GB然後其可以容易地進行配置。

注 - 在我自己的實現中,我遇到了一個性能挑戰,因爲NDB的性能隨着表中行數的增加而下降。 高負載併發讀取會隨着行數增加而降低。 確保您不要進行全表掃描並提供足夠的where子句謂詞。 爲了獲得正確的性能,請根據您的查詢模式正確定義二級索引。 定義二級索引會再次增加內存消耗,因此應相應地規劃查詢模式和內存資源。