mysql
码农~磐石
这个作者很懒,什么都没留下…
展开
-
关于mysql重启后数据库自增id改变的坑
不同的引擎对于自增值的保存策略不同1.MyISAM引擎的自增值保存在数据文件中2.InnoDB引擎的自增值,在MySQL5.7及之前的版本,自增值保存在内存里,并没有持久化。每次重启后,第一次打开表的时候,都会去找自增值的最大值max(id),然后将max(id)+步长作为这个表当前的自增值select max(ai_col) from table_name for update;在MySQL8.0版本,将自增值的变更记录在了redo log中,重启的时候依靠redo log恢复重启之前的值ps原创 2022-04-13 19:33:07 · 1126 阅读 · 0 评论 -
【mysql】waiting for level lock分析与解决
问题:线上接口无响应,无法获取数据排查:执行mysql命令show processllist查询数据库中哪些线程正在执行.先怀疑是数据库操作死锁了,把程序代码反复也为发现可能出现死锁的地方后各种百度查询,看到大神的问题怀疑是数据库引擎myisam的问题(myisam读写的时候会加表锁),查看数据库引擎是innodb,这就怀疑人生了又是各种百度,看到MDL元数据锁会提示‘waiting for level lock’,但是程序中也没有执行操作更改表结构的操作呀;又是各种百度的也未找到原因,偶然间发原创 2021-12-14 15:13:52 · 999 阅读 · 0 评论 -
MySql char和varchar
char:储存字符串,固定长度varchar:储存字符串,可变长度存储数据:char:根据设计长度自动补充空格,例如:char(5)保存数据user自动补充一个空格‘user ’varchar:根据数据长度变化,例如:varchar(5)保存数据user,数据长度4,如果存放的字符串长度不超过255,VARCHAR会额外申请一个字节用于存放实际字符串的长度,如果超过255,会额外申请两个字节的空间用于存放实际字符串的长度,所以根据VARCHAR实际存放的字符长度不同,其所占空间也会不同...原创 2020-08-10 10:03:01 · 115 阅读 · 0 评论 -
mysql联合索引
1.联合索引失效的条件联合索引又叫复合索引。两个或更多个列上的索引被称作复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿转载 2020-07-30 14:41:44 · 108 阅读 · 0 评论