14.10.2 File Space Management 文件空间管理:

来源:互联网 发布:淘宝小号交易平台 编辑:程序博客网 时间:2024/06/09 08:28
14.10.2 File Space Management  文件空间管理:数据文件 你定义在配置文件形成了InnoDB的系统表空间,文件是逻辑连接形成表空间,没有条带化使用。你不能定义你的表在表空间中的分配。  为了避免执行来自所有表和索引 在系统表空间, 你可以开启 innodb_file_per_table 配置选项,会存储新创建的表在一个单独的tablespace 文件(扩展名为.ibd).对于这种方式存储的表, 有较少的碎片在磁盘文件,当表被truncate时, 空间返回给操作系统而不是仍旧被保留在Innodb 在系统表空间下Pages, Extents, Segments, and Tablespaces:每个表空间由数据库pages组成, 每个tablespace 在MySQL 实例有相同的page size.默认的, 所有的tablespace 的page size 是16KB,你可以降低page size 到8KB和4KB 通过指定innodb_page_size 选项,在你创建MySQL 实例的时候pages 是集合成extents 大小是1MB( 64个连续的16KB pages,或者128 8KB pages,或者256 4KB pages)files 在表空间内被称为segments( 那些segments 是不同于回滚段, 实际上包含很多表空间segments)当一个segment 在表空间里,InnoDB 分配一次分配32个pages.在那以后,InnoDB 开始分配整个extents 给segment.InnoDB 可以一次加到4个extents 到一个大的segment来确保良好的串行数据。两个segments 被分配给每个index 在InnoDB里,一个是用于B树的非叶子块的,另外一个是用于leaf nodes.保持leaf nodes在磁盘上连续可以更好的顺序的I/O操作,因为这些leaf nodes 包含实际的数据。一些pages 在tablespace 包含其他Pages的位图,因此 少量的extents 在InnoDB 表空间不能被分配给segments 作为整体,但是只能是单独的pages.当你 需要可用的空闲空间在tablespace 通过使用一个SHOW TABLE STATUS statement,InnoDB 报告extents 明确的空闲的 在tabloespace当你从表删除数据,InnoDB 搜索相应的B-tree indexes.不管释放的空间变的可用对于其他用户依赖的 ,不管 删除的模式释放单独的pages或者extents 到表空间。删除表或者删除所有的记录是保证释放空间给用户,但是记住 删除的记录是物理的移除只有通过Puege 操作,这个会自动发生在它们不被事务回滚或者一致性读需要时How Pages Relate to Table Rows  页于表记录的关系:最大的行长度,特别是对于可变长度列(VARBINARY, VARCHAR, BLOB and TEXT),略少于数据库页的一半。比如, 最大行长度是大约8000字节对于默认的16KB innodb_page_size setting.

0 0
原创粉丝点击