自增主键,很多人以为自己懂了,然而...

简介: 关于InnoDB下,自增键机制的四个实验。

InnoDB下,自增键的机制,真的搞透彻了吗?可以尝试回答一下以下四个问题。 实验一、自增键初始值测验

drop table t1;
create table t1(
    id in
t 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 以上都不对   很多时候,我们只是以为自己懂了。 画外音:做实验之前,版本先拉平到MySQL5.6。   更复杂的问题是:InnoDB在并发插入情况下,自增键的锁机制是怎样的? 画外音:
(1)行锁还是表锁?
(2)事务范围加锁还是SQl语句范围加锁?

本文转自“架构师之路”公众号,58沈剑提供。

目录
相关文章
|
存储 并行计算 算法
Dask 在科学计算中的角色:加速科研数据分析
【8月更文第29天】在科学研究中,处理和分析大规模数据集的能力对于取得突破性成果至关重要。Dask 是一个灵活的并行计算库,能够与 Python 的科学计算生态系统无缝集成,为科研人员提供了高效处理大规模数据集的手段。本文将介绍如何使用 Dask 加速科研数据分析,并通过具体的代码示例展示其在实际场景中的应用。
392 0
|
11月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
8036 138
|
安全 区块链 数据安全/隐私保护
第2讲 隐私计算开源如何助力数据要素流通
数据流通涉及关键主体:数据提供方关注商业秘密、个人隐私、数据控制与安全;数据消费方关注授权链与合规性;数据平台方提供主体审核、授权链审查、合规评审及商业秘密保护,初期依赖主体可信,需逐步转向技术可信。关键技术包括隐私计算实现数据可用不可见,数据空间+区块链确保数据可控可计量,以及数据匿名化实现可算不可识。
202 2
|
11月前
|
IDE 开发工具
idea控制台出现乱码的解决方案
本文提供了解决IntelliJ IDEA控制台乱码问题的多种方法,包括设置项目编码、控制台编码、修改启动配置、修改IDE编码、检查系统环境设置以及更新IDE版本。
1720 0
|
C语言
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
108 0
|
算法
leetcode代码记录(全排列 II
leetcode代码记录(全排列 II
125 4
|
存储 Kubernetes 监控
kubernetes Sidecar 有哪些 资源是共享的
kubernetes Sidecar 有哪些 资源是共享的
556 1
|
SQL 存储 Cloud Native
【云原生】为什么 BI 软件都搞不定关联分析,到底为什么呢?
事物都是普遍联系的,很难有一个独立的事物不和其它发生关联,数据表也一样,很多有业务意义的查询都会涉及多个数据表的关联
168 0
【云原生】为什么 BI 软件都搞不定关联分析,到底为什么呢?
|
数据采集 数据安全/隐私保护
爬虫基础-第三天
第三天虽然内容不多,不过需要大量练习,最好自己总结一波
158 0

热门文章

最新文章