myisam 存储引擎介绍及特点

Posted confusedren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了myisam 存储引擎介绍及特点相关的知识,希望对你有一定的参考价值。

什么是myisam引擎
myisam引擎是mysql关系数据库系统的默认储存引擎(mysql 5.5.5之前)。这种MySQL表存储结构从旧的ISAM代码扩展出许多有用的功能。在新版本的Mysql中,Innodb引擎由于其对事务参照完整性,以及更高的并发性等优点开始逐步取代Myisam引擎。
 
每一个myisam的表都对应于硬盘上的三个文件。这三个文件有一样的文件名,但是有不同的扩展名指示其类型用途:.frm文件保存表的定义,这个文件并不是myisam引擎的一部分,而是服务器的一部分;.MYD保存表的数据;.MYI是表的索引文件。.MYD和.MYI是MyISAM的关键点。
 
[[email protected] ~]# ll /data/3307/mysql/proc.*
-rw-rw---- 1 mysql mysql 9996 Mar 25 04:17 /data/3307/mysql/proc.frm
-rw-rw---- 1 mysql mysql    0 Mar 25 04:17 /data/3307/mysql/proc.MYD
-rw-rw---- 1 mysql mysql 2048 Mar 25 04:17 /data/3307/mysql/proc.MYI
[[email protected] mysql]# file user.MYI
user.MYI: MySQL MISAM compressed data file Version 1
 
myisam 引擎的特点
1.不支持事务
(事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全成功要么全失败)
2.表级锁定,数据更新时锁定整个表:其锁定机制是表级锁定,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。
表级锁定
3.读写互相阻塞:不仅会在写入的时候阻塞读取,myisam还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。
4.只会缓存索引:myisam可以通过key_buffer_size缓存索引,以大大提高访问性能,减少产品IO,但是这个缓存区只会缓存索引,而不会缓存数据。
key_buffer_size = 16M
5.读取速度较快,占用资源相对少。
6.不支持外键约束,但支持全文索引。
 
MyiSAM 引攀适用的生产业务场景,
1 、不需要事务支持的业务(例如转账就不行)。
2 、一般为读数据比较多的应用,读写都频繁场景不适合,读多或者写多的都适合。
3 、读写并发访问相对较低的业务(纯读纯写高并发也可以)(锁定机制问题)
4 、数据修改相对较少的业务(阻塞问题)。
5 、以读为主的业务,例如:数据库系统表、www, blog ,图片信息数据库,用户数据库,商品库等业务。
6 、对数据一致性要求不是非常高的业务(不支持事务)。
7 、硬件资源比较差的机器可以用 MyiSAM (占用资源少)
小结:单一对数据库的操作都可以使用MyiSAM,所谓单一就是尽量纯读,或纯写 ( insert . update , delete )等
8 、使用读写分离的 MySQL 从库可以使用 MyISAM。

以上是关于myisam 存储引擎介绍及特点的主要内容,如果未能解决你的问题,请参考以下文章

数据库基本操作--------MySQL存储引擎

MySQL 进阶 存储引擎 -- MySQL体系结构存储引擎介绍(InnoDB 逻辑存储结构MyISAMMemory)存储引擎特点存储引擎选择ibd2sdi 命令查看 ibd 文件信息

MySQL存储引擎

MySQL存储引擎

解析MySQL的体系架构及学习Mysql存储引擎MyISAM和InnoDB

MySQL存储引擎