联博统计(326681.com)_自增主键,很多人以为自己懂了,然而...
发表时间:2020-12-26 浏览量:16
原创
自增主键,许多人以为自己懂了,然而...
InnoDB下,自增键的机制,真的搞透彻了吗?可以实验回覆一下以下四个问题。
实验一、自增键初始值考试
drop table t1;
create table t1(
id int not null auto_increment,
name varchar(10) unique,
count int default 0,
primary key(id),
index(name)
)engine=innodb;
insert into t1(name) values("zhangsan"),("lisi"),("wangwu");
select * from t1;
叨教,被插入的三条纪录,id分别为:
A 0,1,2
B 1,2,3
C 以上都不对
画外音:初始值,是0照样1?
实验二、批量插入考试
drop table t1,t2;
create table t1(
id int not null auto_increment,
name varchar(10) unique,
count int default 0,
primary key(id),
index(name)
)engine=innodb;
create table t2(
name varchar(10) unique
)engine=innodb;
insert into t2(name) values("x"),("y"),("z");
insert into t1(name) select name from t2;
select * from t1;
叨教,上述insert...select...的执行结果是:
A 插入乐成
B 插入失败,自增键报错
C 以上都不对
画外音:insert ... select ...这种批量插入,对于自增键是否有影响呢?
实验三、夹杂插入考试
drop table t1;
create table t1(
id int not null auto_increment,
name varchar(10) unique,
count int default 0,
primary key(id),
index(name)
)engine=innodb;
insert into t1(id, name) values(1, "shenjian");
insert into t1(id, name) values (111, "111"),(NULL, "abc"),(222, "222"),(NULL,"xyz");
select * from t1;
叨教,最后一个insert语句,执行竣事后id分别是:
A 1,2,3,111,222
B 1,111,112,222,223
C 插入失败,自增键报错
D 以上都不对
实验四、insert ... on duplicate key考试
接着实验三,继续执行以下语句:
insert into t1(name)values("shenjian"),("aaa"),("bbb")
on duplicate key update count=100;
select * from t1;
叨教,最后一个insert语句,执行竣事后id分别是:
A 1,2,3,111,222,223,224,225
B 1,111,112,222,223,224,225,226
C 1,111,112,222,223,224,225
D 1,111,112,222,223,225,226
E 以上都不对
,www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。
许多时刻,我们只是以为自己懂了。
画外音:做实验之前,版本先拉平到MySQL5.6。
更庞大的问题是:InnoDB在并发插入情况下,自增键的锁机制是怎样的?
画外音:
(1)行锁照样表锁?
(2)事务局限加锁照样SQl语句局限加锁?
架构师之路-分享手艺思绪
相关文章:
《改了设置,不想重启,怎么整?》
《故障转移,服务发现,负载平衡,居然都和它有关!》
四个考试,你的谜底是什么?
©著作权归作者所有:来自51CTO博客作者架构师之路的原创作品,如需转载,请注明出处,否则将追究法律责任
java
0
珍藏
上一篇:若何插入? | 非开车,纯手艺交...