Closed draveness closed 2 years ago
老哥看了你很多的文章,干货挺多的,不知道你现在在哪家公司主要做什么方向的工作?
老哥看了你很多的文章,干货挺多的,不知道你现在在哪家公司主要做什么方向的工作?
做 Kubernetes 相关的事情
对于批量插入的语句,MySQL有一个批量申请自增ID的策略,第一次申请1个,1个用完了,第二次申请2个,依次倍增,每次申请的ID的个数是上一次申请的两倍,在这里有可能会出现浪费的自增ID,导致出现不连续的情况
对于批量插入的语句,MySQL有一个批量申请自增ID的策略,第一次申请1个,1个用完了,第二次申请2个,依次倍增,每次申请的ID的个数是上一次申请的两倍,在这里有可能会出现浪费的自增ID,导致出现不连续的情况
这个确实也是一个原因,如果有时间的话,我来做个补充
有个问题想问下,关于图 3 - 5.7 版本之前的 AUTO_INCMRENT
那图上半部的意思是更新 executions
之后也会影响 trades
表的 AUTO_INCMRENT
的?
有个问题想问下,关于图 3 - 5.7 版本之前的 AUTO_INCMRENT
那图上半部的意思是更新
executions
之后也会影响trades
表的AUTO_INCMRENT
的?
不是,这里的意思是 executions 表中的记录引用了 trades 表中 id 为 10 的记录,但是随后 trades 表中的记录被删除了,我们使用相同的 id 创建了新的记录,executions 表完全不知道,它以为自己引用的还是过去的记录。
@draveness
有个问题想问下,关于图 3 - 5.7 版本之前的 AUTO_INCMRENT
那图上半部的意思是更新
executions
之后也会影响trades
表的AUTO_INCMRENT
的?不是,这里的意思是 executions 表中的记录引用了 trades 表中 id 为 10 的记录,但是随后 trades 表中的记录被删除了,我们使用相同的 id 创建了新的记录,executions 表完全不知道,它以为自己引用的还是过去的记录。
明白,我看有点困惑是第一行的 10 我看成是 insert 之后的结果,谢谢
@draveness
老哥看了你很多的文章,干货挺多的,不知道你现在在哪家公司主要做什么方向的工作?
做 Kubernetes 相关的事情
那要出個 K8S 的文章 ~
有趣的概念 不过确实是存在的
主键连续的意义在哪里?充分利用防止用完?
@fkpwolf 主键连续的意义在哪里?充分利用防止用完?
连续的key可以保证b+树写索引的时候尽量顺序写,不会导致page页面分裂
图3-5.7最后一行弄错了吗?AUTO_INCREMENT应该还是10才对吧,第一行插入的时候不也是10吗
@Gilfoyle7 图3-5.7最后一行弄错了吗?AUTO_INCREMENT应该还是10才对吧,第一行插入的时候不也是10吗
这里没问题,AUTO_INCREMENT
是插入后的值
@draveness
@Gilfoyle7 图3-5.7最后一行弄错了吗?AUTO_INCREMENT应该还是10才对吧,第一行插入的时候不也是10吗
这里没问题,
AUTO_INCREMENT
是插入后的值
那意思是UPDATE操作也会改变AUTO_INCREMENT的值吗?怎么第二行变成11了,是我理解哪里理解错了吗?麻烦前辈解惑一下
图3完全看不懂。。
"交叉模式 innodb_autoinc_lock_mode = 2; 所有的插入语句都不需要获取表级别的 AUTO_INCREMENT 锁,但是当多个语句插入的数据行数不确定时,可能存在分配相同主键的风险;"
和官方文档说法不一致,文档里貌似没有说有“分配相同主键”的风险 https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html
https://draveness.me/whys-the-design-mysql-auto-increment/