MySQL总结03
MySQL表的引擎常用的有两种:MyISAM、InnoDB
MyISAM引擎
MySQL5.5之前数据库默认的存储引擎都是MyISAM,MySQL5.5之后(包括5.5)用的是InnoDB。
每一个MyISAM表都对应三个文件,三个文件的文件名相同,但扩展名不同,可以通过文件系统命令查看(file filename):
-
.frm:文件保存表的定义,这个文件不是MyISAM引擎的一部分,而是服务器的一部分
-
.MYD:保存表的数据
-
.MYI:表的索引文件
InnoDB引擎
MySQL5.5之后(包括)MySQL使用InnoDB引擎。InnoDB的表存储只有一个文件,这个文件可以通过配置MySQL参数实现分表文件存储。它和MyISAM的最大
区别是,InnoDB具有事物的完整性和更高的并发性以及行级锁定特点
MyISAM引擎特点
-
不支持事物(事物是指逻辑上的一组操作,要么全成功,要么全失败)
-
表级锁定(更新时锁定整个表):其锁定机制是表级索引,这虽然可以让锁定的实体很小,但同时大大降低了其并发性能
-
读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写。但是读本身并不会阻塞另外的读
-
只会缓存索引:MyISAM可以通过key_buffer_size缓存索引,以大大提高访问性能磁盘IO,但这个缓存区只会缓存索引,不会缓存数据
-
读取速度较快,暂用资源相对少
-
不支持外键索引,但支持全文索引
MyISAM引擎调优
-
设置合适的索引(缓存机制)
-
调整读写优先级,根据实际需求确保重要操作更优先执行
-
启用延迟插入改善大批量写入性能(批量)
-
尽量顺序操作让insert数据都写入到尾部,减少阻塞
-
降低并发数(减少对MySQL访问)
-
对于相对静态的数据库数据,充分利用memcached或query cache服务提高访问效率
查看query cache配置: grep query my.cnf -
主从同步的主库使用InnoDB,从库使用MyISAM
InnoDB引擎特点
InnoDB引擎调优
更改表的引擎
alter table tablename engine=INNODB/MYISAM