我很熟悉InnoDB中插入失敗導致自動遞增主鍵存在差距的事實,我認爲這是不相關的(這對我來說並不明顯)。我遇到的問題是我將5個記錄插入一個帶有自動遞增主鍵的表格中,這會導致主鍵的間隔從5到8.下面是一個重複該問題的腳本。爲什麼INNODB批量插入會導致自動遞增主鍵跳過值?
DROP TABLE IF EXISTS `test_table`;
CREATE TABLE `test_table` (
`A` int(10) unsigned NOT NULL AUTO_INCREMENT,
`B` int(10) unsigned NOT NULL,
PRIMARY KEY (`A`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into `test_table` (`B`)
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5;
insert into `test_table` (`B`)
SELECT 6
UNION
SELECT 7
UNION
SELECT 8
UNION
SELECT 9
UNION
SELECT 10;
SELECT * FROM `test_table`;
我希望兩列A和B是在這種情況下是相同的,但在第二插件A的開始將是8,和B將是6有誰知道爲什麼這個差距會發生?
我看過這裏的文檔:http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html但這些鎖定模式似乎並沒有與這種差距有關(我可能會錯過某些東西)。