什么是myisam引擎
myisam引擎是MySQL关系数据库系统的默认储存引擎(mysql 5.5.5之前)。这种MySQL表存储结构从旧的ISAM代码扩展出许多有用的功能。在新版本的Mysql中,Innodb引擎由于其对事务参照完整性,以及更高的并发性等优点开始逐步取代Myisam引擎。
 
每一个myisam的表都对应于硬盘上的三个文件。这三个文件有一样的文件名,但是有不同的扩展名指示其类型用途:.frm文件保存表的定义,这个文件并不是myisam引擎的一部分,而是服务器的一部分;.MYD保存表的数据;.MYI是表的索引文件。.MYD和.MYI是MyISAM的关键点。
 
[root@XM ~]# 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
[root@XM 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。
posted on 2019-07-08 11:43  小米m  阅读(3364)  评论(0编辑  收藏  举报