相关的文档10bet官方网站 本手册下载 本手册节选

16.2 MyISAM存储引擎

MyISAM是基于较老的(并且不再可用)ISAM存储引擎,但有许多有用的扩展。

表16.2 MyISAM存储引擎特性

功能 支持
b -树索引 是的
备份/恢复时间点(在服务器上实现,而不是在存储引擎上。) 是的
集群数据库支持 没有
聚集索引 没有
压缩数据 是(压缩的MyISAM表只支持使用压缩行格式。使用MyISAM压缩行格式的表是只读的。)
数据缓存 没有
加密的数据 是(在服务器端通过加密功能实现)
外键的支持 没有
全文搜索索引 是的
地理空间数据类型支持 是的
地理空间索引支持 是的
散列索引 没有
索引缓存 是的
锁的粒度 表格
MVCC 没有
复制支持(在服务器上实现,而不是在存储引擎上。) 是的
存储限制 256年结核病
-树索引 没有
交易 没有
更新数据字典的统计信息 是的

每一个MyISAM表存储在磁盘上的两个文件中。这些文件的名称以表名开头,并有一个扩展名来表示文件类型。数据文件具有.MYDMYData)扩展。索引文件有一个.MYIMYIndex)扩展。表定义存储在MySQL数据字典中。

要显式指定需要MyISAM表中,表示用引擎表选项:

创建MYISAM引擎

在MySQL 8.0中,通常需要使用它引擎指定MyISAM存储引擎,因为InnoDB是默认引擎。

你可以检查或修理MyISAM表的mysqlcheck客户端或myisamchk实用程序。你也可以压缩MyISAM表与myisampack占用更少的空间。看到第4.5.3节,“mysqlcheck -表维护程序”MyISAM表维护工具,4.6.6节," myisampack -生成压缩的,只读的MyISAM表"

在MySQL 8.0中MyISAM存储引擎不提供分区支持。分区MyISAM在以前版本的MySQL中创建的表不能在MySQL 8.0中使用.有关更多信息,请参见第24.6.2节,“与存储引擎相关的分区限制”.有关升级这些表以便在MySQL 8.0中使用它们的帮助,请参见第2.11.4节,“MySQL 8.0中的更改”

MyISAM表格具有以下特点:

  • 所有数据值都先以低字节存储。这使得数据机和操作系统相互独立。二进制可移植性的唯一要求是机器使用二补有符号整数和IEEE浮点格式。这些要求在主流机器中得到广泛应用。二进制兼容性可能不适用于嵌入式系统,因为嵌入式系统有时有特殊的处理器。

    低字节优先存储数据没有显著的速度损失;表行中的字节通常是未对齐的,并且按顺序读取未对齐的字节所花费的处理时间比按倒序读取要少一些。此外,与其他代码相比,服务器中获取列值的代码在时间上并不重要。

  • 所有数字键值都首先以高字节存储,以便更好地进行索引压缩。

  • 支持大文件的文件系统和操作系统支持大文件(文件长度不超过63位)。

  • 极限为(2322(1.844E+19)行MyISAM表格

  • 每个索引的最大数目MyISAM表是64。

    每个索引的最大列数是16。

  • 密钥的最大长度为1000字节。这也可以通过更改源代码和重新编译来改变。如果密钥长度大于250字节,则使用比默认值1024字节更大的密钥块大小。

  • 当按排序顺序插入行时(如使用AUTO_INCREMENT列)时,索引树将被拆分,以便高节点只包含一个键。这提高了索引树中的空间利用率。

  • 内部处理一个AUTO_INCREMENT支持每个表的列。MyISAM自动更新此列插入而且更新操作。这使得AUTO_INCREMENT列更快(至少10%)。序列顶部的值在删除后将不再重用。(当一个AUTO_INCREMENT列定义为多列索引的最后一列,则会重用从序列顶部删除的值。)的AUTO_INCREMENT值可以用重置ALTER TABLEmyisamchk

  • 当将删除、更新和插入混合使用时,动态大小的行就不那么碎片化了。这是通过自动合并相邻已删除的块以及在删除下一个块时扩展块来实现的。

  • MyISAM支持并发插入:如果表的数据文件中间没有空闲块,那么可以插入在其他线程从表中读取数据的同时向表中添加新行。当删除行或更新具有比当前内容更多数据的动态长度行时,可能会出现空闲块。当所有空闲块都被用完(填充)时,未来的插入再次变成并发的。看到第8.11.3节,“并发插入”

  • 您可以将数据文件和索引文件放在不同物理设备的不同目录中,以获得更高的速度数据目录而且索引目录表选项创建表.看到第13.1.20节,“创建表语句”

  • 而且文本列可以被索引。

  • 允许在索引列中使用值。每个键占用0到1个字节。

  • 每个字符列可以有一个不同的字符集。看到第十章,字符集,排序规则,Unicode

  • 有一面旗帜在MyISAM指示表是否正确关闭的索引文件。如果mysqld开始于myisam_recover_options系统变量集,MyISAM打开时,表会自动检查,如果表没有正确关闭,则会进行修复。

  • myisamchk控件运行时,将表标记为已检查——update-state选择。myisamchk——快只检查那些没有这个标记的表。

  • myisamchk——分析存储部分键以及整个键的统计信息。

  • myisampack可以包而且VARCHAR列。

MyISAM同时支持以下特性:

  • 对true的支持VARCHAR类型;一个VARCHAR列以一个或两个字节存储的长度开始。

  • 表与VARCHAR列的行长度可以是固定的,也可以是动态的。

  • 长度的和VARCHAR而且字符表中的列可能高达64KB。

  • 任意长度独特的约束。

额外的资源