首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL主键自增值为什么“空洞”?

最终发现了MySQL主键自增值“空洞”了 1.场景准备 测试场景为MySQL 8.0: 主键重复场景 唯一键重复场景 1、建表,包含主键及唯一约束 CREATE TABLE t1( id int(....uk_c1' | +---------+------+----------------------------------------+ 1 row in set (0.00 sec) 在测试过程惊奇的发现测试表主键自增列发生了改变...InnoDB引擎的自增值,其实是保存在了内存里,并且到了MySQL 8.0版本后,将自增值的变更记录在了redo log,当MySQL发生重启的时候依靠redo log恢复重启之前的自增值。...技术分享 | 微服务架构的数据库为什么喜欢分库分表?...MySQL内存管理机制浅析 技术分析 | 浅析MySQL与ElasticSearch的组合使用 ---- 关于 GreatSQL GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR

2.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL主键为0和主键自排约束的关系

开始不设置主键 表的设计如下: 如果id的位置几个0的话:设置主键并且自动排序时,0会从1开始递增; Insert 进去 id = 0的数据,数据会从实际的行数开始增加,和从0变化不一样;...我觉得也就这几种情况吧,无符号的情况应该没什么区别,还有什么没有考虑的希望大家给我留言,可以告诉我你是怎么想的,我也很想知道,现在抛砖引玉我把我的总结和想法写一下:   对我来说,0在数据库里很特殊。...如果使用主键自排约束以前表里0,再设置完主键自排以后所有的0又不会根据行数,而是直接按照自上而下的顺序从1开始排。...如果把表的某个主键的数改成0,那直接就会进行排序放到正数前面,也就是说主键自排是允许0存在的,那为什么本身存在的0要去修改成从1开始的递增序列呢?...哪怕没加主键自排以前只有一个0,加了主键自排以后还是会变成1。   开始0,增加主键自排约束,0依次变为1,2,3,4.......

4.3K30

在Oracle数据库块的结构几个部分?

♣ 题目部分 在Oracle数据库块的结构几个部分? ♣ 答案部分 操作系统块是操作系统读写的最小操作单元,也是操作系统文件的属性之一。...当创建一个Oracle数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小。Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块。...下面介绍一下与数据块存储相关的几个概念。 1、 什么是ASSM和MSSM?...当数据块的FREE空间小于PCTFREE设置的空间时,该数据块从FREELIST中去掉,当块由于DML操作FREE空间大于PCTUSED设置的空间时,该数据库块将被添加在FREELIST链表。...⑤ Lck:表示这个事务所影响的行数,锁住了几行数据,对应有几个行锁。在这里,可以看到01号事务槽Lck为3,因为该事务槽的事务Flag为U,证明该事务已经提交,但是锁还没有清除。

1.1K30

Mysql为何建议使用自增id作主键,什么优点

原本放在一个页的数据,现在分到两个页,整体空间利用率降低大约 50%。 当然分裂就有合并。当相邻两个页由于删除了数据,利用率很低之后,会将数据页做合并。...假设你的表确实有一个唯一字段,比如字符串类型的身份证号,那应该用身份证号做主键,还是用自增字段做主键呢? 由于每个非主键索引的叶子节点上都是主键的值。...InnoDB使用的是聚簇索引,将主键组织到一棵B+树,而行数据就储存在叶子节点上,若使用"where id = xxx"这样的条件查找主键,则按照B+树的检索算法便可查找到对应的叶节点,以后得到行数据...若对其他字段列进行条件搜索,则须要两个步骤:第一步在辅助索引B+树检索其他,到达其叶子节点获取对应的主键。第二步使用主键在主索引B+树种再执行一次B+树检索操做,最终到达叶子节点便可获取整行数据。...(重点在于经过其余键须要创建辅助索引) 聚簇索引的优缺点排序 优势: 数据访问更快,由于聚簇索引将索引和数据保存在同一个B+树,所以从聚簇索引获取数据比非聚簇索引更快 聚簇索引对于主键的排序查找和范围查找速度很是快

1.9K30

11条MySQL规范,你知道的几个

一、数据库命令规范 · 所有数据库对象名称必须使用小写字母并用下划线分割 · 所有数据库对象名称禁止使用mysql保留关键字(如果表名包含关键字查询时,需要将其用单引号括起来) · 数据库对象的命名要能做到见名识意...2、禁止给表的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表的一个索引,5.6以后,虽然了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...每个表都可以多个索引,但是表的存储顺序只能有一种 Innodb是按照主键索引的顺序来组织表的。...而在覆盖索引,二级索引的键值可以获取所有的数据,避免了对主键的二次查询 ,减少了IO操作,提升了查询效率。...4、对于程序连接数据库账号,遵循权限最小原则 程序使用数据库账号只能在一个DB下使用,不准跨库 程序使用的账号原则上不准drop权限。 最后 欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

66840

mysql清空表数据,并重置主键为1

MySQL清空表数据,并重置主键为1 ️ 摘要 在本文中,我将向大家展示如何在 MySQL 数据库清空表的所有数据,并将主键重置为 1。...在软件开发过程,特别是在开发和测试阶段,我们经常需要清空数据库表并重新开始。这种情况下,仅仅删除数据是不够的,最好还能将主键(通常是自增的)重置为 1。今天,我将向你们展示如何做到这一点。...清空表数据 在 MySQL ,你可以使用 TRUNCATE TABLE 语句来清空一个表。这不仅会删除表的所有数据,还会释放用于存储数据的空间。...TRUNCATE TABLE table_name; 例如,如果你一个名为 users 的表,你可以这样清空它: TRUNCATE TABLE users; 重置主键为1 使用 TRUNCATE TABLE...如果表外键约束,请先确保没有其他表依赖于它,或者在清空表之前先删除外键约束。 总结 清空 MySQL 表数据并重置主键为 1 是一个非常简单但有用的操作,特别是在开发和测试阶段。

16110

被逼无奈学了几个mysql命令,竟然大用。

登录mysql 使用命令行登录msyql,来看下数据库是否正常. mysql -u root -p 结果能正常登录。 难道数据库丢了? 命令行扫下数据库。...看了几篇文章后,归纳起来大概以下几种可能。...mysql 通信端口变更了 服务器安全限制,需要打开对外的访问 root账号权限不足 确认mysql端口和账号权限 上面第2种情况,直接排除,阿里云早就开了。...经过上面的种种操作,可以确定数据库没问题,数据库进程没问题,问题在于服务器的配置出问题了。 也就是端口访问被拦截。 思考了片刻,灵光乍现,前几天是不是玩了下宝塔,这货是不是安全限制? 果然!...1. mysql -u root -p // 登录mysql, 输入后直接回车才能输入密码 2. show dagabases; //查看有几个数据 3. use db; //切到具体数据库 show

58010

分享几个MySQL数据库管理效率的利器

MySQL数据库管理效率的利器,含数据库备份、数据同步、性能监控到故障恢复和高可用性方面的工具,我只是做了工具整理,目的是抛砖引玉,兴趣的小伙伴可自行对感兴趣的工具进行深入研究,欢迎大家一起交流。...备份工具 备份是数据库管理的关键任务之一,常用的备份工具包括: - mysqldump:基于SQL语句的备份工具,能够将数据库的数据以SQL文件的形式导出,灵活性高,但备份和恢复速度较慢,适用于小型数据库...- xtrabackup:基于物理备份的工具,可以快速备份和恢复大型数据库,支持增量备份,但需要对InnoDB存储引擎一定的了解。...SQL分析审核工具 SQL分析审核工具是数据库管理的重要组成部分,常用的工具包括: - Soar:一个基于机器学习的SQL优化器,可以自动识别和优化SQL语句,提高数据库性能。...> 这些技术工具为MySQL数据库管理提供了丰富的选择,从数据库备份、数据同步、性能监控到故障恢复和高可用性方面都提供了强大的支持,可以帮助我们提升数据库管理效率,兴趣的小伙伴赶紧玩起来!

12110

MySQLleft join的几个SQL对比

读完需要9分钟 速读仅需7分钟 对于很多同学来说,写SQL时的表关联看起来是一件很简单的事情,知道逻辑,预期的结果,好像没什么特别要注意的,今天在写一条SQL逻辑的时候,觉得对于left join的部分还是存在一些误解...,(2,'bb'),(3,'cc'),(4,'bb'),(5,'bb'); insert into test2 values(2,'bb'),(3,'cc'),(4,'bb'),(6,'dd'); 表的数据如下...如果按照id为关联条件,最后使用了and的方式,查询的结果其实和本来的预期是差距的,即test1显示了全部的数据记录。...5 | bb | | 2 | bb | | 4 | bb | | 5 | bb | +----+------+ 6 rows in set (0.00 sec) 所以在多表关联的绑定字段是很重要的...我们继续做多个字段的关联,看看优化器怎么解析,在where条件再进行id列的映射。

88920

【DB笔试面试529】在Oracle数据库块的结构几个部分?

♣ 题目部分 在Oracle数据库块的结构几个部分? ♣ 答案部分 操作系统块是操作系统读写的最小操作单元,也是操作系统文件的属性之一。...当创建一个Oracle数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小。Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块。...下面介绍一下与数据块存储相关的几个概念。 1、 什么是ASSM和MSSM?...当数据块的FREE空间小于PCTFREE设置的空间时,该数据块从FREELIST中去掉,当块由于DML操作FREE空间大于PCTUSED设置的空间时,该数据库块将被添加在FREELIST链表。...⑤ Lck:表示这个事务所影响的行数,锁住了几行数据,对应有几个行锁。在这里,可以看到01号事务槽Lck为3,因为该事务槽的事务Flag为U,证明该事务已经提交,但是锁还没有清除。

1.4K40

数据库mysql什么用?哪些优点?

相信很多人都有听说过云数据库和云服务器,甚至有的人会把云数据库和云服务器混为一谈,认为云数据库是云服务器的一部分,事实上这种认知是错误的,云数据库和云服务器完全不是事实上这种认知是错误的,云数据库和云服务器完全不是一体的...那么云数据库mysql什么用?又有哪些优点呢?接下来跟大家一起来了解一下。 云数据库mysql的作用 云数据库mysql什么用?...云数据库mysql的优点 了解了云数据库mysql什么用,接下来再来了解一下优点。云数据库主要有4大优点,分别是性能卓越,安全稳定,管理方便和自动备份。...安全稳定方面则是表现在具备指定内外网IP访问功能,简单来说就是默认只有我们购买的网站服务器才可以访问我们的数据库,这样就可以防止外部未授权的IP访问我们的数据库,确保了我们的数据库的安全。...关于云数据库mysql什么用,已经为大家做了解答,希望以上内容对大家了解云数据库好的帮助作用。

7.9K30

MySQL 为了让你的表里一个主键是操碎了心

MySQL 的开发规范中都会明确写着:MySQL InnoDB 表必须有主键主键的选择建议:添加一个自增列作为主键,每一行的值删除后一般不会重用。...但实质上, 业务开发,还是会遇到 InnoDB 表无主键无索引的情况。 首先来看一下 MySQL InnoDB 对于主键的选择: 1. 显式声明的 primary key 2....在这里我和大家盘点一下 MySQL 为了让每个表一个主键都做了什么事情: 1....在主从复制,从库设置 sql_generate_invisible_primary_key 为 on , 但主库没有设置,创建的表也不会自动添加 my_row_id 对于 GIPK 隐式主键的使用场景...可以说到这里 MySQL 也是给主键这个事情操碎了心。如果大家以后不要在 MySQL 主键这个事情上掉坑里了。 了 GIPK 我也不怕传统业务开发的无主键的表了 :)

1K20

MySqlInnoDB表为什么要建议用自增列做主键

B+ 树的特点: 所有关键字都出现在叶子结点的链表(稠密索引),且链表的关键字恰好是有序的; 不可能在非叶子结点命中; 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层...; 2、主键(PRIMARY KEY) 如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引...这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15...(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置,此时MySQL不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存清掉...《高性能MySQL的原话 ? ?

3.8K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券