腾讯|什么?还在用delete删除数据《死磕MySQL系列 九》

腾讯|什么?还在用delete删除数据《死磕MySQL系列 九》

文章图片

腾讯|什么?还在用delete删除数据《死磕MySQL系列 九》

文章图片

腾讯|什么?还在用delete删除数据《死磕MySQL系列 九》

文章图片

腾讯|什么?还在用delete删除数据《死磕MySQL系列 九》

文章图片

腾讯|什么?还在用delete删除数据《死磕MySQL系列 九》

文章图片


系列文章五、如何选择普通索引和唯一索引《死磕MySQL系列 五》
六、五分钟 , 让你明白MySQL是怎么选择索引《死磕MySQL系列 六》
七、字符串可以这样加索引 , 你知吗?《死磕MySQL系列 七》
八、无法复现的“慢”SQL《死磕MySQL系列 八》
参与了好几个项目开发 , 每个项目随着业务量的增大 , MySQL数据日益剧增 , 例如其中一个项目中得用户足迹表 , 那是非常的疯狂 , 只怪我大意了 , 没有闪 。
这篇文章我会从delete对性能的影响 , 以及如何以正确的姿势来删除数据 。
在MySQL中Innodb存储引擎的表存在两部分 , 一部分是表结构 , 另一部分是表数据 。
在MySQL8.0之前/var/lib/mysql下都会存在.frm文件 , 在MySQL8.0之后就不存在了 。 这是因为MySQL8.0中已经允许把表结构定义放到数据字典中了 , 是用参数innodb_file_per_table来决定的 。
一、表空间表空间分为几种 , 系统表空间、用户表空间、undo空间 。
系统表空间:MySQL内部的数据字典 , 如information_schema库下的数据 。
用户表空间:自己建立的表结构数据
undo空间:存储Undo信息 , 用于快速回滚 。
MySQL8.0之前表结构是在系统表空间存储的 , 在MySQL5.6.6后可以使用参数innodb_file_per_table来控制 。
设置为off时 , 表数据是放在系统表空间中 , 也就是MySQL的数据字典放在一起 。
设置为on时 , innodb存储引擎的表数据存储在.idb文件中 。
你知道表定义存储在哪里吗?
来到死磕MySQL系列的专用数据库kaka , 新建一张表evt_sms 。