我正在使用高速率數據流並執行以下步驟將數據存儲在MySQL數據庫中。對於每個新到的項目。優化MySQL插入來處理數據流
- (1)解析傳入的項目。
- (2)執行幾個 「INSERT ... ON DUPLICATE KEY UPDATE」
我已經使用INSERT ... ON DUPLICATE KEY UPDATE消除一個額外的往返到數據庫。
同時努力提高整體性能,我認爲做大量更新方式如下:
- (1)解析傳入項目。 (2)用「INSERT ... ON DUPLICATE KEY UPDATE」生成SQL語句並追加到文件中。
定期將文件中的SQL語句刷新到數據庫中。
兩個問題:
- (1)將這個在數據庫負載產生積極的影響?
- (2)我應該如何將語句刷新到數據庫,以便在完全刷新後才重建索引? (使用交易?)
更新:我使用Perl DBI + MySQL MyISAM。
在此先感謝您的任何意見。
謝謝。我已更新原始帖子,以表明我在MyISAM存儲引擎中使用了Perl DBI。我的目標之一是加速傳入項目的初始處理,因爲我們由於緩慢而丟失了一些項目。 – ssn 2009-11-21 12:13:40
只是澄清 - 你說與MyISAM表使用交易是無關緊要的?那麼,在這種情況下,沒有技術可以加速數百萬項目的批量插入? – ssn 2009-11-21 12:15:38
正確。 MyISAM不提供事務鎖定或完整性。但結果是速度更快。 – 2009-11-22 21:44:34