MyISAM引擎
- 特点
1.不支持事务
2.表级锁定:更新时锁整个表
3.读写互相阻塞:不仅会在写入的时候阻塞读取,还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读
4.只会缓存索引:通过key_buffer_size 缓存索引,大大提高访问性能较少磁盘IO,但缓存区只会缓存索引,而不会缓存数据
5.读取速度较快,占用资源相对少
6.不支持外键约束,但支持全文索引
7.MySQL5.5.5前缺省的存储引擎
InnoDB引擎
- 特点
1.支持事务:支持4个事务隔离级别,支持多版本读
2.行级锁定:通过索引实现,全表扫描仍然会是表锁
3.读写阻塞与事务隔离级别相关
4.具有非常高效的缓存特性:能缓存索引,也能缓存数据
5.整个表和主键以cluster方式存储,组成一棵平衡树
6.所有Secondary Index都会保存主键信息
7.支持分区,表空间
8.支持外键约束
9.和MyISAM比:InnoDB对硬件资源要求比较高
生产环境中如何批量更改MySQL引擎
-
法1:MySQL命令语句修改
ALTER TABLE 表名 ENGINE= INNODB; ALTER TABLE 表名 ENGINE= MyISAM;
-
法2:使用sed命令对备份内容进行引擎转换
mysqldump > bak1.sql nohup sed -e 's/MyISAM/InnoDB/g' bak2.sql > bak2.sql & mysql < bak1.sql
-
法3:mysql_convert_table_format命令修改
mysql_convert_table_format --u=用户名 --p=密码 -e --engine=改成的存储引擎 库名 表名