【发布时间】:2014-12-13 20:58:37
【问题描述】:
以下情况可能吗?
MySQL 版本 5.6.15
CREATE TABLE my_table (
id int NOT NULL AUTO_INCREMENT.
data1 int,
data2 timestamp,
PRIMARY KEY (id)
) ENGINE=InnoDB;
innodb_autoinc_lock_mode = 1
AUTO_INCREMENT=101
- 0 毫秒:运行查询 A:
INSERT INTO my_table (data1, data2) VALUES (101, FROM_TIMESTAMP(1418501101)), (102, FROM_TIMESTAMP(1418501102)),.. [总共 200 个值] ..,(300, FROM_TIMESTAMP(1418501300)); - 500 毫秒:运行查询 B:
INSERT INTO my_table (data1, data2) VALUES (301, FROM_TIMESTAMP(1418501301)); - 505 毫秒:查询 B 已完成。该行的 id=301。
- 1000 毫秒:
SELECT id FROM my_table WHERE id >= 300;— 将返回一行 (id=301)。 - 1200 毫秒:查询 A 已完成。这些行的 id=101 到 id=300。
- 1500 毫秒:
SELECT id FROM my_table WHERE id >= 300;— 将返回两行 (id=300, id=301)。
换句话说,是否可以先选择 id=301 的行,然后再选择 id=300 的行?
如果可能的话,如何避免?
【问题讨论】:
-
你试过了吗?你能在 300 之前插入 ID 301 吗?
-
我正在调试一个问题,这似乎已经发生了。
标签: mysql innodb auto-increment