MyISAM存储引擎

简介:

    支持事务,支持外键,尤其是访问速度快,对事务完 整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。 

    每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为: 

    1 .frm(存储表定义)

    2 MYD(MYData,存储数据)

    3 MYI(MYIndex,存储索引) 

    数据文件和索引文件可以放置在不同的目录,平均分配IO,获取更快的速度。要指定数据文件和索引文件的路径,需要在创建表的时候通过DATA DIRECTORY和INDEX DIRECTORY语句指定,文件路径需要使用绝对路径。 每个MyISAM表都有一个标志,服务器或myisamchk程序在检查MyISAM数据表时会对这个标志进行设置。MyISAM表还有一个标志用来表明 该数据表在上次使用后是不是被正常的关闭了。如果服务器以为当机或崩溃,这个标志可以用来判断数据表是否需要检查和修复。如果想让这种检查自动进行,可以 在启动服务器时使用–myisam-recover现象。这会让服务器在每次打开一个MyISAM数据表是自动检查数据表的标志并进行必要的修复处理。 MyISAM类型的表可能会损坏,可以使用CHECK TABLE语句来检查MyISAM表的健康,并用REPAIR TABLE语句修复一个损坏到MyISAM表。 

MyISAM的表还支持3种不同的存储格式: 

    静态(固定长度)表 

    动态表 

    压缩表 

    其中静态表是默认的存储格式。静态表中的字段都是非变长字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢 复;缺点是占用的空间通常比动态表多。静态表在数据存储时会根据列定义的宽度定义补足空格,但是在访问的时候并不会得到这些空格,这些空格在返回给应用之 前已经去掉。同时需要注意:在某些情况下可能需要返回字段后的空格,而使用这种格式时后面到空格会被自动处理掉。 

    动态表包含变长字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁到更新删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难。 

    压缩表由myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支。

本文转自: http://www.linux78.com/myisam-cun-chu-yin-qing.html
Linux起点



      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1601724,如需转载请自行联系原作者





相关文章
|
9月前
|
存储 安全 关系型数据库
什么是存储引擎
什么是存储引擎
567 0
|
4月前
|
存储 关系型数据库 MySQL
InnoDB和MyISAM存储引擎对比
InnoDB和MyISAM存储引擎对比 相同点:都是B+索引,不清楚B+索引的可以看上一篇
41 1
|
5月前
|
SQL 存储 关系型数据库
第20章_Myisam与InnoDB
第20章_Myisam与InnoDB
26 0
|
8月前
|
存储 关系型数据库 MySQL
MyISAM的特点
MyISAM是一种MySQL数据库的存储引擎
96 0
|
10月前
|
存储 缓存 Oracle
第05章_存储引擎
第05章_存储引擎
66 0
|
存储 缓存 关系型数据库
Innodb存储引擎的索引组成
Innodb存储引擎的索引组成
|
存储 安全 关系型数据库
【Innodb 和mylsam存储引擎】
【Innodb 和mylsam存储引擎】
|
关系型数据库 MySQL 数据库
MyISAM和InnoDB区别
MyISAM和InnoDB区别
MyISAM和InnoDB区别
|
存储 SQL 缓存
LSMT存储引擎浅析
LSMT存储引擎浅析
434 1
LSMT存储引擎浅析
|
存储 NoSQL Go
从零实现一个 k-v 存储引擎
写这篇文章的目的,是为了帮助更多的人理解 rosedb,我会从零开始实现一个简单的包含 PUT、GET、DELETE 操作的 k-v 存储引擎,你可以将其看做是一个简易版本的 rosedb,就叫它 minidb 吧(mini 版本的 rosedb)。
226 0
从零实现一个 k-v 存储引擎