我們有一個大約70GB的InnoDB數據庫,我們預計它在未來的2到3年內會增長到幾百GB。大約60%的數據屬於單個表格。目前數據庫運行良好,因爲我們有一個64 GB RAM的服務器,所以幾乎整個數據庫都可以存儲到內存中,但是當數據量會大得多時,我們擔心未來。現在我們正在考慮某種方式來分割表格(特別是佔數據最大部分的表格),現在我想知道,最好的方法是什麼。MySQL分區/分片/分割 - 哪條路要走?
選項我目前知道的是
- 使用自帶的版本5.1
- 使用某種類型的第三方庫的封裝了數據的分區(如Hibernate碎片) MySQL分區
- 自己實現它我們的應用程序內
我們的應用是建立在J2EE和EJB 2.1(希望我們切換到EJB 3的某一天)。
你會建議什麼?
編輯(2011-02-11):
只是一個更新:目前數據庫的大小是380 GB,我們的「大」表的數據大小是220 GB,其索引的大小是36 GB 。因此,儘管整個表格不再適合記憶,但索引確實如此。
系統仍然運行良好(仍然在同一個硬件上),我們仍在考慮對數據進行分區。
編輯(2014-06-04): 另一個更新:整個數據庫的大小是1.5TB,我們的「大」表的大小是1.1TB。我們將服務器升級到具有128 GB RAM的4處理器機器(Intel Xeon E7450)。 該系統仍然運行良好。 我們接下來要做的是將我們的大表放在一個單獨的數據庫服務器上(我們已經對我們的軟件進行了必要的更改),同時升級到具有256 GB RAM的新硬件。
此設置應該持續兩年。然後,我們要麼終於開始實施分片解決方案,要麼只購買帶有1TB內存的服務器,這應該讓我們保持一段時間。
EDIT(2016年1月18日):
我們自把我們的大表在它自己的數據庫的單獨服務器上。目前該數據庫的大小約爲1.9TB,其他數據庫的大小(除「大」之外的所有表)爲1.1TB。
當前硬件設置:
- 的HP ProLiant DL 580
- 4×英特爾(R)至強(R)CPU E7-4830
- 256 GB RAM
性能優良用這個設置。
只需在2 - 3年內獲得更多內存,或者立即使用固態硬盤。一旦你花了幾百美元這樣做,然後考慮優化。 – Kurt 2009-03-12 01:38:18
你能否再次更新當前狀態? – 2013-02-15 04:27:38
這有什麼新東西?哪種解決方案已被使用? – Benj 2013-06-12 08:54:06