MySQL引擎(MyISAM Innodb CSV Memory)

1.MySQL引擎之MyISAM

MySQL5.5之前的版本默认储存引擎 MySAM储存引擎表由MYD(数据文件)和MYI(索引文件)组成

锁的介绍 锁主要作用是管理共享资源的并发访问 锁用于实现事务的隔离性 锁的类型

    共享锁(也称读锁),针对同一份数据,多个读操作可以同时进行而不会互相影响 独占锁(也称写锁),当前写操作没有完成前,它会阻断其他写锁和读锁

锁的粒度

    表级锁 行级锁

MyISAM存储引擎特性 1.并发性与锁级别 2.表损坏修复 3.MyISAM表支持数据压缩

myisampack -b  -f  myIsam.MYI

MyISAM储存引擎限制 • 版本 < MySQL5.0时默认表大小为4G,如存储大表则要修改MAX_Rows和AVG_ROW_LENGTH • 版本 > MySQL5.0时默认支持256TB

适合场景

    非事型应用 只读类应用

2.MySQL引擎之InnoDB

MySQL5.5 及之后版本默认存储引擎,支持事务的ACID特性 Innodb使用表空间进行数据存储

innodb_file_pre_table

ON:独立表空间,tablename.ibd OFF:系统表空间:ibdataX X是一个数字 系统表空间和独立表空间如何选择?

    系统表空间会产生IO瓶颈,刷新数据的时候是顺序进行的所以会产生文件的IO瓶颈 独立表空间可以同时向多个文件刷新数据 Innodb储存引擎的特性 1.支持事务的ACID特性 2.Innodb支持行级锁,可以最大程度的支持并发

MyISAM和Innodb

3.MySQL引擎之CSV

文件系统储存特点 数据以文本方式储存在文件中 .CSV文件储存表内容 .CSM文件储存表的元数据如表状态和数据量 .frm文件储存表结构信息

特点 以CSV格式进行数据储存 使用场景 适合做为数据交换的中间表

4.MySQL引擎之Memory

也称HEAP储存引擎,所以数据保存在内存中,如果MySQL服务重启数据也会丢失,但是表结构会保存下来。

功能特点

    支持HASH索引和BTree索引 所有字段都为固定长度 varchar(10)=char(10) 不支持BLOB和TEXT等大字段 Memory储存引擎使用表级锁

如何选择存储引擎

    大部分情况下,InnoDB都是正确的选择,可以简单地归纳为一句话“除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择InnoDB引擎

参考条件

    事务 如果应用需要事务支持,那么InnoDB(或者XtraDB)是目前最稳定并且经过验证的选择 备份 如果可以定期地关闭服务器来执行备份,那么备份的因素可以忽略。反之,如果需要在线热备份,那么选择InnoDB就是基本的要求 崩溃恢复 MyISAM崩溃后发生损坏的概率比InnoDB要高很多,而且恢复速度也要慢 应用举例 • 日志型应用 • 只读或者大部分情况下只读的表 • 订单处理
经验分享 程序员 微信小程序 职场和发展