2013-04-08 47 views
4

Mysql自動增量不是順序的。MySQL自動增量在innodb中不是順序的

當我試圖上傳它跳過一些自動遞增ID的CSV大量數據

自動遞增ID不連續

的數據庫引擎InnoDB的& ID是自動遞增

示例

 
    id  color 
    1  red 
    2  blue 
    3  green 
    4  orange 
    9  pink 
    10  white 
    11  black 
    16  gray 
    17  brown 

該id不是順序的。

+0

爲什麼它的順序與否有關係? – Rob 2013-04-08 14:14:22

+0

問題是什麼? (順便說一句,它*是*順序,它只是沒有缺口) – 2013-04-08 14:14:33

+0

我可以理解好奇心。但我們需要更多的幫助...... csv是如何上傳的?等 – 2013-04-08 14:16:05

回答

3

不知道codeignitor和事務的細節,但我知道查詢中的「catched failed」(如insert ignore)有不插入的效果,但是會增加auto_increment。在這裏尋找你的答案。其餘的不要打擾'固定'。

1

如果您使用的是比5.1.22更新的MySQL,那麼可能是因爲InnoDB locking strategy與Miguel Angel Nieto在this blog post中解釋相關。

你可以改變這種行爲設定innodb_autoinc_lock_mode參數:

  • innodb_autoinc_lock_mode = 0「傳統」鎖定模式,相同的行爲以前5.1.22
  • innodb_autoinc_lock_mode = 1「連續」鎖定模式,默認行爲,這可能是您設置的內容,它的目的是爲了提高併發性和性能,其缺點是在序列上有漏洞
  • innodb_autoinc_lock_mode = 2「交錯」鎖定模式,這是最快和最具擴展性的鎖定模式,但它使用基於語句的複製或恢復情況時,當SQL語句從二進制重播是不是安全登錄

鄰使用innodb_autoinc_lock_mode可以檢查detailed mysql documentation的詳細信息。