表参数设置可用于优化表性能,大多数情况下可以忽视这些参数。如果未明确指出,这些参数是可以用于所有的存储引擎的。
1ENGINE
ENGINE用于为表指定存储引擎,可以使用下标中列出的引擎名称。引擎名称可以被引号引起来也可以不用引起来,‘DEFAULT’可以被识别但是会忽略执行。可以使用SHOWENGINES查看所有引擎。
默认情况,如果指定了一个不可用的存储引擎时会报错,可以通过删除SQL模式中的NO_ENGINE_SUBSTITUTION,在发生该错误时通过默认引擎替代指定的引擎。通常系统参数default_storage_engine为InnoDb。
2AUTO_INCREMENT
表自增列的初始数字,在MySQL5.7中,该设置适用于MyIsam、Memory、InnoDb和Archive表。对于可用AUTH_INCREMENT的表,也可以使用ALTERTABLEtbl_nameAUTH_INCREMENT=value来重新设置自增的初始值,但是该值必须要比表中现有数据的最大值大。
3AVG_ROW_LENGTH
用于设置表中行数据平均长度,适用于拥有变行的较大表。当创建MyIsam表时,MySQL会根据MAX_ROWS和AVG_ROW_LENGTH参数来决定如何设置表,如果两个参数都没指定,MyIsam默认最大的数据长度和索引长度是TB(如果操作系统不支持这么大则会按系统限制来)。如果想要设置较小的数值来减小索引大小来提高性能并且不需要这么大的文件,可以通过设置myisam_data_pointer_size系统变量,当然如果需要更大也可以增加此值,该值设置为7则能承受每个表大小为TB。
4[DEFAULT]CHARACTERSET
指定表的默认字符集,CHARSET与CHARACTERSET同效,如果该值设置为DEFAULT,则表使用数据库的字符集。
5CHECKSUM
如果想要为MySQL所有的行维护一个校验和,可以将该值设置为1,当表改变时校验和会自动该表。这样会使表更新变慢,但是会更加容易地找到损坏的表。CHECKSUMTABLEtbl_name语句能显示表的校验和。
6[DEFAULT]COLLATE
给表指定一个默认的校验集。
7COMMENT
给表添加注释,允许长度为字符。NDB集群7.5.2后COMMENT用法有所不同,用时需额外注意参考其规范。
8COMPRESSION
压缩算法应用于InnoDb表的页级压缩,支持算法包括zlib、liz4和none。在透明页压缩特性中引入了压缩参数,页压缩仅支持对于InnoDb表中数据文件的表空间压缩,并且还能用于win和linux平台中表碎片空间的压缩。