我有一個MySql數據庫。我有很多記錄(大約4,000,000,000行),我想處理它們以減少它們(減少到大約1,000,000,000行)。如何管理MySql上的巨大操作
假設我有以下表格:
表RAWDATA:我有每秒超過5000行,我想將它們插入到RAWDATA
表ProcessedData:此表是在RawData中插入的行的已處理(聚合)存儲。 最小行數> 20000000
表ProcessedDataDetail:我寫表ProcessedData(數據是彙總)
用戶的詳細資料要查看和搜索ProcessedData表中需要加入更多的比其他表。 插入RawData並在ProcessedData中搜索(ProcessedData INNER JOIN ProcessedDataDetail INNER JOIN ...)非常慢。我用了很多索引。假設我的數據長度是1G,但是我的索引長度是4G :)。 (我想獲得這些指標的搭配,它們讓我的工藝變慢)
我該如何提高這個過程的速度?
我想我需要一個影子表從ProcessedData,將其命名爲ProcessedDataShadow。然後處理RawData並將它們與ProcessedDataShadow聚合,然後將結果插入ProcessedDataShadow和ProcessedData。你有什麼想法??
(我正在用C++開發該項目)
謝謝你提前。
非常感謝。但我在插入InnoDB時遇到了問題。爲什麼它慢慢插入記錄? – 2011-06-14 08:47:50
由於併發支持,InnoDB插入比MyISAM慢得多。但是,比較插入到一個表中時,同時連接10個同時連接,InnoDB可能會更快或更快,所以這一切都取決於應用程序。您可以通過同時插入多行來加速進程(也就是說,多個VALUES括號) – jishi 2011-06-14 08:52:28
這也值得一讀:http://tag1consulting.com/InnoDB_Performance_Tuning – jishi 2011-06-14 08:53:42