一、表空间

1、表空间: innodb 引擎存储的最高层; 存放所有的数据

2、独立表空间:Mysql 版本5.6 后默认开启的单表单空间

(1)Innodb 默认存储引擎页的大小为 16K ;默认表空间 大小为96k

(2)独立表空间 开启方式 innodb_file_per_table ON 从Mysql 5.6.6 开始,默认值 ON

二、数据页空洞

如果我们修改了 info表 的表结构 ,比如 给表添加注释,发现9440 Dec 14 09:59 info.frm

磁盘上的 frm 表结构文件 立刻被更新了。

那我们如果删除一行数据呢? 从文件更改时间上来看也是立刻修改了。180224 Dec 14 10:03 temp.ibd

但是 idb数据文件 大小 180224却没有改变

那么数据库的删除流程到底是怎么样的? 为什么我们删除一行,存储的ibd文件大小却没有改变,当我们点击 删除表的时候,SQl 引擎发生了什么?

1、Innodb 的删除

为什么 ibd 文件不会变小?

InnoDb 的数据存储类型是 B+树 ,B+树的叶子结点上 ,存储的是 数据页 ; 一页数据页存储的是 数据记录,假设一条数据记录占用 200字节 ,一页数据页大小为 16Kb ,那么一页可以存储80条数据记录 ,当某条数据记录,比如 ID = 300 的数据记录被删除了,实际上,引擎只会标记这条数据记录为删除,而不会将数据记录从磁盘上抹去,所以磁盘文件上的 ibd 文件不会缩小

一个数据页 Page A 上,总是存储着 ID从 X 到 X+N 的 数据记录, 如果 X 到 X+N 之间的数据记录被删除了,会留下一个数据空洞,那么插入的X 到 X+N 区间之间,且不在PageA上,就会复用这个数据页, 所以文件大小不会减少

如果删除了1整个数据页的所有记录,那么这整个数据页都会被复用,

所以删除和插入,其实是在数据页上,产生和填补空洞 的过程 ,经过删除更新插入的表,都可能会产生大量的空洞。

2、整理数据页的空洞

那么,当一张表被更新插入,产生了数据空洞之后,如何整理数据页,使得数据变得更紧凑呢?

可以采取重建表的操作 alter table,实际上这里是 引擎自动完成了 转存数据、交换表名、删除旧表的操作

mysql> alter table temp engine=innodb;163840 Dec 14 10:52 temp.ibd

3、测试数据页的增长效果

新建一张 new_test 表

CREATE TABLE `new_test` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`name` char(255) DEFAULT NULL,PRIMARYKEY(`id`)

) ENGINE=InnoDB AUTO_INCREMENT=191 DEFAULT CHARSET=utf8mb4;

我们知道 初始 ibd文件 的大小默认是 96K ,inndb 默认单个数据页大小是16K,对 new_test 表进行数据增加,观察 ibd文件大小。

insert into new_test (name) value("leon”)

发现 当rows 增长时,ibd文件大小增长规律如下:

idb文件大小 VS rows

96k – 0~81

128k – 82~136

144k – 136~190

160k – 190~255

16K 增长对应 54条rows ,1条row算出来约等于 296.29b , 正好等于 char 255b + int(11) 44 = 299b 。

可以看出来的确是由连续的数据页组成数据的。

4、数据空洞的复用

为了数据空洞的复用的问题,我们来删除 new_test 表 1-180行中的 155-160 行 ,ibd文件 原始大小为 144KB,当我们删除 150-160 这时候,数据页就有了 10条ID 的空洞 ,此时表中ID是 : 0-149 161 -180 共计 170条, 那么这时候,插入20条 还是 10条 数据页呢 ?

测试可得。插入20条,ID到 201。表空间变为 160k,所以原来的数据页存在空洞 可以被复用(??待理解!!)

---按照计算应该一条数据是800b,有十条空洞,再加入10条,应该是144KB+0.8*10=152KB,160k不是说明原来的空洞没有复用上吗??

原文:https://blog.csdn.net/qq_28018283/article/details/85003657

原文:https://www.cnblogs.com/ivy-zheng/p/11109972.html

mysql空洞_Mysql 表空间和 数据页空洞相关推荐

  1. mysql空洞数据_Mysql 表空间和 数据页空洞 艾薇Ivy

    一.表空间 1.表空间: innodb 引擎存储的最高层: 存放所有的数据 2.独立表空间:Mysql 版本5.6 后默认开启的单表单空间 (1)Innodb 默认存储引擎页的大小为 16K :默认表 ...

  2. mysql空洞数据,Mysql 表空间和 数据页空洞

    一.表空间 1.表空间: innodb 引擎存储的最高层: 存放所有的数据 2.独立表空间:Mysql 版本5.6 后默认开启的单表单空间 (1)Innodb 默认存储引擎页的大小为 16K :默认表 ...

  3. mysql 独享表空间_Mysql 独享表空间

    1.查看当前的表空间: [mysql@master ~]$ mysql -uroot -hlocalhost Welcome to the MySQL monitor. Commands end wi ...

  4. mysql 表空间_mysql 表空间

    什么是表空间 默认情况下,InnoDB只包含一个称为系统表空间的表空间,其标识符为0.可以使用innodb_file_per_table配置参数间接创建更多表空间.表空间由一系列文件组成.文件的大小不 ...

  5. mysql 直接删表空间文件_oracle删除(释放)数据文件/表空间流程

    oracle删除(释放)数据文件/表空间流程 生产环境:数据库里空间不足,niptest表空间251G,只使用了17G 再alter database datafile '...../niptest1 ...

  6. mysql数据库表空间压缩,表空间中有数据也可以压缩表空间(数据文件)大小!!...

    首先说声抱歉,在 中提出以下观点,经过研究请教,发现观点都是错误的,在这里给予更正. 3.得知表空间中有数据不能resize数据文件的大小:要想resize数据文件,那么表空间中必须没有数据. 更正后 ...

  7. mysql 修改表空间名称_修改多个表空间的数据文件的名称和位置

    修改多个表空间的数据文件的名称和位置,可以在表空间级别,也可以在数据库级别进行. 在表空间级别进行就如同修改一个表空间数据文件的名称 和位置,一个一个的进行,直到全部完成. 在数据库级别,可以一次性的 ...

  8. MySQL 8.0 表空间机制

    墨墨导读:数据是以表空间来维护和存放的.在表空间中包含数据,结构,索引等信息,如何有效使用表空间对于MySQL来说非常重要. 数据库的表空间是用来存储数据的逻辑空间,也是存储数据的最大逻辑单元,其下还 ...

  9. 【MySQL】InnoDB行格式、数据页结构以及索引底层原理分析

    目录 一.MySQL架构图 二.InnoDB数据页结构 2.1 局部性原理 2.2 InnoDB的数据页格式 三.InnoDB的行格式 3.1 Compact行格式 3.1.1 变长字段长度列表 3. ...

  10. MySQL Table--独立表空间

    数据库表空间 独立表空间 在MySQL 5.6 中引入独立表空间的概念,启用独立表空间后,每个表将生成独立的文件来进行存储. 创建表时可以指定表存放的文件路径 ##首选需要确保innodb_file_ ...

最新文章

  1. 高并发编程-深入分析wait和sleep的区别并结合源码示例佐证
  2. Windows Server 2016 TP5下载及测试序列号
  3. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)
  4. 2008年CCNA第二学期第九单元题目(2008-12-14 14:04:38)
  5. 7 SD配置-企业结构-定义-定义信贷控制范围
  6. LG化学和三星SDI宣布关闭美国电池工厂直至4月13日
  7. CentOS 6.3下Samba服务器的安装与配置【转载】
  8. JavaScript BigInt 尝鲜
  9. Php clearstatcache() 函数详解
  10. java毕业设计万科集团社区管理系统mybatis+源码+调试部署+系统+数据库+lw
  11. Vue项目搭建常用的配置文件,request.js和vue.config.js
  12. 含绝对值函数的可导性
  13. 403 Forbidden - PUT https://registry.npmjs.org/- Forbidden
  14. 英语每日听写练习 Day 19
  15. 基于协同过滤 算法推荐系统图书推荐猜你喜欢
  16. 图片 滚动 放大缩小 旋转
  17. 计算机考试文科生报什么专业好就业,文科生也能报考理工科专业?这4个专业不仅能报考,毕业前景大好...
  18. win7 android usb驱动,在win7系统下安装手机usb驱动软件的教程
  19. XFTP软件连接虚拟机
  20. tcl多媒体面试 java_TCL面试经验

热门文章

  1. php 时分秒选择联动,jquery.datepair日期时分秒选择器
  2. 人力资源领域RPA的应用场景
  3. iOS-边框图片,头像边框
  4. 【Python函数综合实例】
  5. Leetcode高频题目整理(更新)
  6. 《微积分:一元函数微分学》——高阶导数
  7. bzoj1189: [HNOI2007]紧急疏散evacuate
  8. DDR3基本概念1 - 存储单元结构和原理
  9. win7开机显示计算机无法启动,win7无法开机怎么办?解决开机报错代码C0000034的方法...
  10. matlab 保存图片大小尺寸_改变figure大小存储图片(matlab)