美文网首页
丁奇-MySQL实战读书笔记13

丁奇-MySQL实战读书笔记13

作者: 布朗XD | 来源:发表于2021-02-10 21:19 被阅读0次

1:为啥删除了表的一半数8据,表文文件大小没变化?

因为delete 命令其实只是把记录的位置,或者数据页标记为了“可复用”,但磁盘文件的大小是不会变的。也可以认为是一种逻辑删除,所以物理空间没有实际释放,只是标记为可复用,表文件的大小当然是不变的啦!

2:表的数据信息存在哪里?

表数据信息可能较小也可能巨大无比,她可以存储在共享表空间里,也可以单独存储在一个以.ibd为后缀的文件里,由参数innodb_file_per_table来控制,老师建议总是作为一个单独的文件来存储,这样非常容易管理,并且在不需要的时候,使用drop table命令也能直接把对应的文件删除,如果存储在共享空间之中即使表删除了空间也不会释放。

3:表的结构信息存在哪里?

首先,表结构定义占有的存储空间比较小,在MySQL8.0之前,表结构的定义信息存在以.frm为后缀的文件里,在MySQL8.0之后,则允许把表结构的定义信息存在系统数据表之中。

系统数据表,主要用于存储MySQL的系统数据,比如:数据字典、undo log(默认)等文件

4:如何才能删除表数据后,表文件大小就变小?

重建表,消除表因为进行大量的增删改操作而产生的空洞,使用如下命令:

1:alter table t engine=InnoDB

2:optimize table t( 等于 recreate+analyze)。

3:truntace table t (等于drop+create)

5:空洞是啥?咋产生的?

空洞就是那些被标记可复用但是还没被使用的存储空间。

使用delete命令删除数据会产生空洞,标记为可复用

插入新的数据可能引起页分裂,也可能产生空洞

修改操作,有时是一种先删后插的动作也可能产生空洞

相关文章

  • 丁奇-MySQL实战读书笔记13

    1:为啥删除了表的一半数8据,表文文件大小没变化? 因为delete 命令其实只是把记录的位置,或者数据页标记为了...

  • mysql的锁

    整理自 丁奇的MySQL实战45讲 全局锁 命令Flush tables with read lock (FTWR...

  • 丁奇-MySQL实战读书笔记1

    这个专栏的内容是我工作以来看过讲MySQL最深入而且最细致的,作者丁奇是前阿里资深技术专家,和褚霸(霸爷)一起研究...

  • 丁奇-MySQL实战读书笔记2

    今日主题:redo log(重做日志)和 binlog(归档日志)。 redo log(重做日志) MySQL 里...

  • 丁奇-MySQL实战读书笔记3

    隔离性与隔离级别 若隔离级别是“读未提交” V1=2 V2=2 V3=2 若隔离级别是“读提交” V1=1 V2...

  • 丁奇-MySQL实战读书笔记6

    全局锁 全局锁就是对整个数据库实例加锁,全局锁的典型使用场景是,做全库逻辑备份。 表级锁 一种是表锁,一种是元数据...

  • 丁奇-MySQL实战读书笔记5

    在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,...

  • 丁奇-MySQL实战读书笔记4

    索引维护 B+ 树为了维护索引有序性,在插入新值的时候需要做必要的维护。以上面这个图为例,如果插入新的行 ID 值...

  • 丁奇-MySQL实战读书笔记14

    1:又刷新了认知,先给结论(之前不知从哪看的,以为count(主键id)性能最佳)按照效率排序的话,count(字...

  • 丁奇-MySQL实战读书笔记15

    本期是答疑,把核心要点记录一下: MySQL 怎么知道 binlog 是完整的? binlog-checksum ...

网友评论

      本文标题:丁奇-MySQL实战读书笔记13

      本文链接:https://www.haomeiwen.com/subject/hypatltx.html