MySQL表的引擎常用的有两种:MyISAM、InnoDB

mysqli操作数据库 mysql数据库sid_缓存


mysqli操作数据库 mysql数据库sid_MySQL_02

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引擎特点

mysqli操作数据库 mysql数据库sid_缓存_03

InnoDB引擎调优

mysqli操作数据库 mysql数据库sid_mysqli操作数据库_04

更改表的引擎

alter table tablename engine=INNODB/MYISAM