MySQL调优_引擎

InnoDB存储引擎

MySQL 5.5.5后InnoDB是默认存储引擎

InnoDB采用"表空间"保存文件

InnoDB支持事物处理

InnoDB的存储特性

  • InnoDB表空间有两种形式

    1. 使用系统表空间 ibdataN
    2. 独立表空间 tablename.ibd (推荐)
  • 设置innodb_file_per_table决定表空间模式

  • 为什么推荐独立表空间

    系统表空间 all in one 不利于管理

    系统表空间会产生IO瓶颈

    系统表空间很难回收存储空间

    独立表空间使用 optimize table 命令回收存储空间

InnoDB的事务特性

  • InnoDB支持事务
  • InnoDB默认使用行级锁
  • InnoDB具备良好的并发特性

MySQL的锁

职责分类:

  • 共享锁 - 读锁
  • 独占锁(排它锁) - 写锁

粒度分类

  • 行级锁
  • 表级锁

在InnoDB中只有利用索引的更新,删除操作,才可以使用行级锁

不能使用索引的写操作则是表锁

在实际开发的时候,如果遇到写操作,一定要确保update/delete语句的条件

要能够使用索引,否则就会锁表,程序不具备并发性

MyISAM存储引擎

MyISAM特点

  • 不支持事务
  • 支持全文检索,支持text支持前缀索引
  • 支持数据压缩
  • 紧密存储,顺序读性能很好
  • 表级锁,混合读写性能不佳,并发性差

MyISAM应用场景

  • 非事务应用,例如:保存日志
  • 只读类应用,报表数据,字典数据
  • 空间类应用,开发GIS系统(5.7版本以前)
  • 系统临时表,SQL查询,分组的临时表引擎

Memory存储引擎

Memory特点

  • 不支持事务
  • 内存读写,临时存储
  • 超高的读写效率,比MyISAM高一个量级
  • 表级锁,并发性差

Memory应用场景

  • 读多写少的静态数据,例如省县市的对饮表
  • 充当缓存使用,保存高频访问静态数据
  • 系统临时表

Momory关键参数

  • 设置max_heap_table_size控制内存表大小(字节)
  • 设置tmp_table_size设置内存临时表最大值(字节)

你可能感兴趣的:(MySQL,mysql,数据库,sql)