10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 本手册摘录

15.9.1.2创建压缩表

可以在中创建压缩表file-per-table表空间或常规表空间.InnoDB表压缩不可用系统表空间. 系统表空间(空间0.ibdata文件)可以包含用户创建的表,但它也包含从不压缩的内部系统数据。因此,压缩只适用于每个表或常规表空间中存储在文件中的表(和索引)。

在每个表空间的文件中创建压缩表

要在每个表文件的表空间中创建一个压缩表,innodb\文件\每个\表必须启用(默认设置)。您可以在MySQL配置文件中设置此参数(我的.cnf我的.ini)或者动态地,使用声明。

之后innodb\文件\每个\表选项,指定ROW_FORMAT =压缩条款或密钥块大小子句,或两者兼而有之创建表更改表格语句在每个表空间的文件中创建压缩表。

例如,可以使用以下语句:

设置GLOBAL innodb\u file\u per\u table=1;创建表t1(c1 INT主键)行\格式=压缩键\块\大小=8;
在常规表空间中创建压缩表

要在常规表空间中创建压缩表,FILE_BLOCK_SIZE必须为常规表空间定义,这是在创建表空间时指定的。这个FILE_BLOCK_SIZE值必须是相对于innodb_page_size值和压缩表的页大小,由创建表更改表格密钥块大小子句,必须等于文件\u块\u大小/1024.例如,如果innodb\页面\大小=16384文件块大小=8192,的密钥块大小表中必须是8。有关更多信息,请参见第15.6.3.3节,“常规表空间”

下面的示例演示如何创建常规表空间和添加压缩表。该示例假定为默认值innodb_page_size16K的。这个FILE_BLOCK_SIZE8192要求压缩表具有密钥块大小的8。

mysql>创建表空间`ts2`添加数据文件`ts2.ibd'文件\块\大小=8192 Engine=InnoDB;mysql>创建表t4(c1 INT PRIMARY KEY)表空间ts2 ROW\u FORMAT=COMPRESSED KEY\u BLOCK\u SIZE=8;
笔记
  • 从MySQL 8.0开始,压缩表的表空间文件是使用物理页大小而不是InnoDB公司page size,它使空压缩表的表空间文件的初始大小小于以前的MySQL版本。

  • 如果您指定ROW_FORMAT =压缩,你可以省略密钥块大小; 这个密钥块大小默认设置为innodb_page_size价值观。

  • 如果指定有效的密钥块大小值,可以省略ROW_FORMAT =压缩; 压缩将自动启用。

  • 以确定最佳的价值键块大小,通常,为同一个表创建多个具有不同值的副本,然后测量结果的大小.ibd文件,并查看每个文件的性能如何工作量.对于通用表空间,请记住删除一个表不会减少通用表空间的大小.ibd文件,也不会将磁盘空间返回到操作系统。有关详细信息,请参阅第15.6.3.3节,“常规表空间”

  • 这个密钥块大小值被视为提示;可以使用不同的大小InnoDB公司如果有必要的话)。对于每个表文件的表空间,则密钥块大小只能小于或等于innodb_page_size价值观。如果指定的值大于innodb_page_size值,则忽略指定的值,发出警告,然后密钥块大小设置为innodb_page_size价值观。如果innodb\u strict\u mode=开,指定无效的密钥块大小值返回错误。对于常规表空间,有效密钥块大小值取决于FILE_BLOCK_SIZE表空间的设置。有关详细信息,请参阅第15.6.3.3节,“常规表空间”

  • InnoDB公司支持32KB和64KB的页面大小,但这些页面大小不支持压缩。如需更多信息,请参阅innodb_page_size10bet官方网站文档。

  • 的默认未压缩大小InnoDB公司数据是16KB。根据选项值的组合,MySQL对表空间数据文件使用1KB、2KB、4KB、8KB或16KB的页面大小(.ibd文件)。实际的压缩算法不受密钥块大小价值观;该值确定每个压缩块的大小,进而影响每个压缩页中可以压缩的行数。

  • 在每个表空间的文件中创建压缩表时,设置密钥块大小等于InnoDB公司页面大小通常不会导致太多的压缩。例如,设置键块大小=16通常不会造成太大的压缩,因为InnoDB公司页面大小为16KB。此设置可能仍然适用于具有许多长数据的表,瓦尔查尔文本列,因为这样的值通常压缩得很好,因此可能需要更少的值溢出页中描述的第15.9.1.5节,“InnoDB表的压缩工作原理”. 对于常规表空间密钥块大小值等于InnoDB公司不允许页面大小。有关更多信息,请参见第15.6.3.3节,“常规表空间”

  • 表的所有索引(包括聚集索引)使用相同的页大小进行压缩,如创建表更改表格声明。表属性,如行格式密钥块大小不属于创建索引语法InnoDB公司表,如果指定,则忽略它们(尽管,如果指定,它们将出现在显示创建表声明)。

  • 有关性能相关的配置选项,请参阅第15.9.1.3节,“InnoDB表的调谐压缩”

对压缩表的限制
  • 类中不能存储压缩表InnoDB公司系统表空间。

  • 通用表空间可以包含多个表,但是压缩表和未压缩表不能在同一个通用表空间中共存。

  • 压缩应用于整个表及其所有关联索引,而不是单独的行,不管子句名称如何行格式

  • InnoDB公司不支持压缩临时表。当innodb_strict_mode已启用(默认值),创建临时表如果返回错误ROW_FORMAT =压缩密钥块大小已指定。如果innodb_strict_mode则会发出警告,并使用非压缩行格式创建临时表。同样的限制也适用于更改表格对临时表的操作。