Mysql存储引擎
MyISAM存储引擎
Mysql5.5版本以前的默认存储引擎,大部分系统表、临时表(在排序、分组等操作中,数量超过一定大小后,由查询优化器建立的临时表)使用MyISAM存储引擎
构成:MYD:数据文件;MYI:索引文件
特性: 支持表级锁,所以在并发性高的情况下,性能不是很好。
表损坏修复(检查表:check table tabllename;修复表:repair table tablename)
支持表的全文索引
支持压缩操作(减少磁盘IO),压缩后不能再写入,只能读。myisampack命令行工具
不支持事务
Innodb存储引擎:
5.5版本开始,mysql中建立数据库默认存储引擎为Innodb。Innodb使用表空间存储数据(系统表空间,独立表空间)
mysql> show variables like 'innodb_file_per_table';
innodb_file_per_table=on-----------独立表空间:tablename.ibd
innodb_file_per_table=off-----------系统表空间:ibdataX
系统表空间,独立表空间对比:
5.5版本前默认使用系统表空间
系统表空间无法简单收缩文件大小(删除表数据时,系统表空间不会缩小空间)
独立表空间可以通过optimize table命令收缩系统文件
系统表空间可能会产生IO瓶颈,独立表空间可同时对多个表同时进行IO操作
系统表空间到独立表空间的转换:
1、使用mysqldum导出所有表数据
2、停止mysql服务,修改相关参数,删除Innodb相关文件
3、重启mysql服务,重建Innodb独立表空间
4、重新导入数据
Innodb存储引擎特性:
事务性存储引擎(原子性、隔离性、一致性、持久性)
Redo日志(事务提交后,修改后的数据存放到缓冲器,每隔一段时间刷写到磁盘)mysql> show variables like 'innodb_log_buffer_size';
Undo日志(未提交事务的回滚---一致性、原子性)
行级锁能支持更大的并发
CSV存储引擎:
数据以文件方式存储在文件中
.CSV文件存储表内容
.CSM文件存储表元数据和表状态和数据量
.frm文件存储表结构信息
所有列不能为空、不支持索引
Archive存储引擎:
以zlib对表数据进行压缩,磁盘IO更少
数据存储在ARZ后为后缀的文件中
只支持inert和select操作,只允许在自增ID列建立索引
Memory存储引擎:
数据存放在内存中,读写速度快,但是服务器重启或宕机数据会丢失
使用场景:
用于查找或者映射表,例如邮编和地区的对应表
保存数据分析中产生的中间表
缓存周期性聚合数据的结果表