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要高很多,而且恢复速度也要慢 应用举例 • 日志型应用 • 只读或者大部分情况下只读的表 • 订单处理