2011-10-30 69 views
2

我有一個InnoDB表拋光的問題,我無法找出:緩慢插入在MySQL InnoDB表添加時二級密鑰

  • 我有5列,其中4列構成的主表鍵和另外3個輔助鍵;在該表中,大容量插入需要很長時間 - 對於100,000條記錄(僅爲250個記錄/秒),最多可達400秒
  • 如果刪除所有二級索引,插入速度非常快 - 對於100,000條記錄(5000條記錄爲20秒/秒或快20倍)
  • 如果我在單個bigint用戶標識列(也是主鍵的一部分(我經常需要搜索特定用戶的數據))上添加甚至一個輔助鍵,插入物立即變慢3-4倍。

這是怎麼回事?我懷疑答案是InnoDB存儲索引的方式,但經過大量閱讀後,我無法弄清楚。最令人沮喪的是,使用MyISAM引擎添加了所有索引的同一張表總是以5000記錄/秒的速度工作。

+0

本應該說沒有二級索引是「唯一的」,所以沒有唯一的索引,既沒有外鍵,也沒有任何東西可以明顯地減慢這些事情的數量 –

回答

0

我不知道爲什麼。但是MySQL網站提供了一個性能調優技巧,用於通過二級密鑰插入到InnoDB中(這意味着這只是它的方式,您必須處理它):"If you have UNIQUE constraints on secondary keys, you can speed up table imports by temporarily turning off the uniqueness checks during the import session..."

+0

謝謝,應該提到的是,雖然表中沒有任何外鍵的唯一約束,所以這MySQL的建議並沒有真正的幫助 - 之前看到過它 –