当前位置: 首页 >知识百科 > 内容

MyISAM是什么知识介绍

知识百科
导读 目前关于大家提出的MyISAM是什么这个问题,大家都希望能够得到一个答案,那么小编今天就去收集了一些MyISAM是什么相关的内容来分享给大...
2023-10-01 15:01:10

目前关于大家提出的MyISAM是什么这个问题,大家都希望能够得到一个答案,那么小编今天就去收集了一些MyISAM是什么相关的内容来分享给大家,如果大家感兴趣的话可以接着往下看。

MyISAM是默认存储引擎(Mysql1前)。它基于更老的ISAM代码,但有很多有用的扩展。(注意MySQL 1不支持ISAM)。 每个MyISAM在磁盘上存储成三个文件,每一个文件的名字均以表的名字开始,扩展名指出文件类型。

MyISAM 是默认存储引擎(Mysql1 前)。它基于更老的 ISAM 代码,但有很多有用的扩展。(注意 MySQL 1 不支持 ISAM)。 每个 MyISAM 在磁盘上存储成三个文件,每一个文件的名字均以表的名字开始,扩展名指出文件类型。

.frm 文件存储表定义;·MYD (MYData)文件存储表的数据;.MYI (MYIndex)文件存储表的索引。

简介

要明确表示你想要用一个 MyISAM 表格,请用 ENGINE 表选项指出来:

CREATE TABLE t (i INT) ENGINE = MYISAM;

注释:老版本的 MySQL 使用 TYPE 而不是 ENGINE(例如,TYPE = MYISAM)。MySQL 1 为向下兼容而支持这个语法,但 TYPE 现在被轻视,而 ENGINE 是首先的用法。

一般地,ENGINE 选项是不必要的;除非默认已经被改变了,InnoDB 是默认存储引擎(Mysql 1 后)。

你可以用 myisamchk 工具来检查或修复 MyISAM 表。请参阅 MySQL 1 参考手册 6 节,“使用 myisamchk 做崩溃恢复”。你也可以用 myisampack 来压缩 MyISAM 表,让它们占更少的空间。请参阅 MySQL 1 参考手册 2 节,“myisampack,产生压缩、只读的 MyISAM 表”。

特征

MyISAM 存储引擎的一些特征

所有数据值先存储低字节。这使得数据机和操作系统分离。二进制轻便性的唯一要求是机器使用补码(如最近 20 年的机器有的一样)和 IEEE 浮点格式(在主流机器中也完全是主导的)。唯一不支持二进制兼容性的机器是嵌入式系统。这些系统有时使用特殊的处理器。

先存储数据低字节并不严重地影响速度;数据行中的字节一般是未联合的,从一个方向读未联合的字节并不比从反向读更占用更多的资源。服务器上的获取列值的代码与其它代码相比并不显得时间紧。

大文件(达 63 位文件长度)在支持大文件的文件系统和操作系统上被支持。

当把删除和更新及插入混合的时候,动态尺寸的行更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块来自动完成。

NULL 值被允许在索引的列中。这个占每个键的 0-1 个字节。

所有数字键值以高字节为先被存储以允许一个更高地索引压缩。

当记录以排好序的顺序插入(就像你使用一个 AUTO_INCREMENT 列之时),索引树被劈开以便高节点仅包含一个键。这改善了索引树的空间利用率。

每表一个 AUTO_INCREMENT 列的内部处理。MyISAM 为 INSERT 和 UPDATE 操作自动更新这一列。这使得 AUTO_INCREMENT 列更快(至少 10%)。在序列顶的值被删除之后就不能再利用。(当 AUTO_INCREMENT 列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。AUTO_INCREMENT 值可用 ALTER TABLE 或 myisamch 来重置。

1 如果数据文件中间的表没有自由块了,在其它线程从表读的同时,你可以 INSERT 新行到表中。(这被认识为并发操作)。自由块的出现是作为删除行的结果,或者是用比当前内容多的数据对动态长度行更新的结果。当所有自由块被用完(填满),未来的插入又变成并发。

1你可以把数据文件和索引文件放在不同目录,用 DATA DIRECTORY 和 INDEX DIRECTORY 选项 CREATE TABLE 以获得更高的速度。

版权声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。