我在MySQL數據庫中有一個2000萬記錄表。 SELECT的工作非常快,因爲我建立了良好的索引,但是INSERT和UPDATE操作變得非常慢。數據庫是重負載下的Web應用程序的後端。 INSERT和UPDATE非常慢,因爲這個表上有5個索引,索引大小現在大約爲1GB - 我想這需要很多時間來計算。Granules選擇數據庫表分區?
爲了解決這個問題,我決定對錶格進行分區。我運行MySQL 4,不能升級(不能直接控制服務器),所以我會做手動分區 - 爲每個分區創建一個單獨的表。
數據集由大約18000個不同的邏輯片組成,可以完全分開查詢。因此,我可以創建18000個名爲(maindata1,maindata2等)的表。但是,我不確定這是最佳的方式嗎?除了顯而易見的事實,即當我想手動執行某些操作時,我將不得不瀏覽管理工具中的18000個項目,因此我擔心文件系統性能。文件系統是ext3。我不知道在36000個文件(有數據文件和索引文件)的目錄中查找文件速度有多快。
如果這是一個問題,我可以將一些數據切片連接到一個表中。例如:maindata10,maindata20等maindata10將包含切片1,2,3 ... 10。如果我去參加10人的「團體」,我只會有1800張桌子。如果我想組20,我會得到900張桌子。
我想知道這個分組的最佳大小,即一個目錄中的文件數量與表大小?
編輯:我也想知道是否使用多個單獨的數據庫將文件組合在一起是一個好主意。因此,即使我有18000個表格,我也可以將它們分組在30個數據庫中,每個表格有600個表格。看起來這將更容易管理。我不知道是否有多個數據庫會增加或減少性能或內存佔用(儘管這會使備份和恢復複雜化)
是的,表結構相同,但數據不同。我正在使用myISAM。 – 2010-09-06 17:17:59