傻大方


首页 > 潮·科技 > >

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



按关键词阅读: 数据库 删除 InnoDB

删除|什么?还在用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的数据字典放在一起 。
【删除|什么?还在用delete删除数据《死磕MySQL系列 九》】设置为on时 , innodb存储引擎的表数据存储在.idb文件中 。
你知道表定义存储在哪里吗?
来到死磕MySQL系列的专用数据库kaka , 新建一张表evt_sms 。

猜一下创建的evt_sms表结构定义存储在哪里呢?
在information_schema库里边的TABLES中 , 执行查询SELECT TABLE_NAMETABLE_COMMENT FROM TABLES WHERE TABLE_TYPE='BASE TABLE';

我们自定义的表类型是TABLE_TYPE 。说了这么是为了解释如果把innodb_file_per_table设置为off , 则表数据也会存放在这里 。
问题:如果数据存在放共享表空间中 , 表删除了 , 空间会删除吗?
答案是不会的 。
参数innodb_file_per_table设置为on数据存储在哪里呢?
一般情况下是在var/lib/mysql中 , 会看到你创建的数据库 , 进入到数据库中就能看到一张表对应一个ibd文件 。
数据就是存储在这里 。


稿源:(原来是咔咔)

【傻大方】网址:http://www.shadafang.com/c/111395UW2021.html

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


上一篇:双十一|双十一七大厂商终极战报汇总 魅族不再惨兮兮,小米破193亿元

下一篇:微博|双11手机战绩盘点:红米成最大赢家,消费者对价格愈发敏感