MySQL常用的存储引擎之MyISAM
myisam是大多数系统表和临时表使用的存储引擎
这里的临时表不是平常所说的那个临时表
MyIsam存储引擎表由MYD和MYI组成
MYD指的是数据文件,MYI指的是索引文件,这个表下还会生成一个表结构文件
MyISAM存储引擎的特性
并发和锁级别
MyISAM支持的是表级锁,并发性并不是特别好
表损坏修复
MYISAM并不支持事务,所以对日志的读取和恢复效果不是特别好
可以通过 check table tablename和repair table tablename来进行回复
MyISAM表支持的索引类型
MyISAM表支持数据压缩
命令行myisampack命令
对于已经压缩的表只能进行读操作
MyISAM存储引擎的限制
在mysql5.0是默认表大小为4G,如果要存储大表则要修改MAX_Rows和AVG_ROW_LENGTH,在>MySQL>5.0的版本时默认支持为256TB
MyISAM存储引擎适用的场景
非事务性应用
对于只读类应用很不错
空间类应用(如GPS)
MySQL常用的存储引擎之Innodb
MySQL5.0及之后版本的默认存储引擎
Innodb使用表空间进行数据存储
系统表空间无法收缩文件大小
系统表空间会产生IO瓶颈
独立表空间可以收缩文件大小
独立表空间可以同时向多个文件刷新数据
建议:对Innodb使用独立表空间
表的转移步骤
Mysql常用存储引擎之CSV
文件系统的存储特点
数据以文本方式存储在文件中
.csv文件存储表内容
.csm文件存储表的元数据如表状态和数据量
.frm文件存储表结构信息 (所有的引擎下的表都有这个文件)
特点
以CSV格式进行数据存储
所有列必须都是不能为null的(简单理解就是创建表的时候列属性 的默认值需要为not null)
不支持索引
不适合大表,不适合在线处理
对数据文件直接编辑(类似MyIsam和Innodb使用的都是二进制文件对数据进行保存的)
CSV是以文本文件内容进行保存的
使用场景
Mysql常用引擎值Archive
文件系统的存储特点
以zlib对表数据进行压缩,磁盘I/O更少
数据存储在ARZ为后缀的文件中
功能特点
支持行级锁和缓冲区(所以可以实现高并发的插入)本身并不是一种是事务性的存储引擎
只支持insert和select操作
只允许在自增ID列上加索引
使用场景
日志和数据采集类应用
Mysql常用引擎值Memory
文件系统的存储特点
也称为HEAP存储引擎,数据存储在内存当中(在宕机的情况下数据会丢失,但是表的结构会保留下来,表的结构是保留在磁盘当中的)
功能特点
支持HASH索引(默认,无法做范围索引)和BTree索引
等值查找 HASH 范围查找BTree
所有字段都是为固定字段varchar(10)=char(10)
不支持BLOG和TEXT等大字段
Menory存储引擎使用表级锁
最大大小由max_heap_table_size参数决定
对已经存在的表修改这个参数是无效的,如果需要对已经存在的表修改这个参数的话需要对表进行重建
容易混淆的概念
Memory存储引擎表和临时表(岁所有的线程都是有效的)
临时表(只对当前的session有效)
1.系统临时使用的表
限制以内使用Memory表
超过限制使用MyIsam表
2.create temporary table建立的临时表
使用场景 (Memory数据已丢失,所以要求数据可再生)
用于查找或是映射表,例如右边 和地区的对应表
用于保存数据分析中产生的中间表
用于缓存周期性聚合数据的结果表
Mysql常用引擎值Federated(默认是禁止的)
如何使用
默认禁止,启用需要在启动时增加federated参数
功能特点
提供了访问远程MySQL服务器上表的方法
本地不存储数据,数据全部放到远程服务器上
本地需要保存表结构和远程服务器的连接信息
使用场景
偶尔的统计分析及手工查询
如何选择正确的存储引擎
参照条件
事务
备份
崩溃恢复
存储引擎的特有特性
网友评论