Mysql性能优化 - 存储引擎
Mysql性能优化 - 存储引擎
存储引擎介绍
- 插拔式的插件方式
- 存储引擎是指定在表上的。每一张表都可以指定专用的存储引擎
- 不管采用何种存储引擎都会在数据区,产生对应的frm (表结构定义文件)
几大存储引擎概述
CSV存储引擎
数据以CSV文件存储
- 不能定义索引,列必须定义为NOT NULL,不能设置自增列,不适用大表或者数据的在线处理
- CSV数据使用“,”隔开,可直接编辑CSV文件进行数据的编排,在通过flush table XXX命令使其生效,数据安全性较低
应用场景
- 数据的快速导入导出
- 表格数据直接转换为CSV
Archive存储引擎
压缩协议进行数据的存储,数据存储为ARZ文件格式
- 只支持insert和select两种操作
- 只允许自增ID列建立索引
- 行级锁
- 不支持事务
- 数据占用磁盘少
应用场景
-
日志的存储
-
大量设备的数据采集
Memory存储引擎
数据保存在内存中,IO效率比其他引擎高的多,服务重启数据丢失,内存数据表默认只有16M
- 支持hash索引,B tree索引,默认hash
- 字段长度都是固定长度varchar(32)= char(32)
- 不支持大数据存储格式,如blog,text
- 表级锁
应用场景
- 等值查找热度较高的数据
- 查询结果内存中的计算,大多数都是采用这种存储引擎作为临时表存储需要计算的数据
Myisam存储引擎
mysql 5.5版本之前的默认存储引擎,较多的系统表也还是在使用这个存储引擎,系统临时表也会用到
- 有专门的区域保存数据表中数据的条数,select count无需进行数据扫描
- 数据(MYD)和索引(MYI)分开存储
- 表级锁
- 不支持事务
Innodb存储引擎
mysql 5.5及之后版本的默认存储引擎
- 事务ACID
- 行级别锁
- 聚集索引(主键索引)方式进行数据存储
- 支持外键关系保证数据完整性