存储引擎

存储引擎

介绍

  1. 插拔式的插件方式
  2. 存储引擎是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎
  3. 不管表采用什么样的存储引擎,都会在数据区,产生对应的一个frm文件(表结构定义描述文件,mysql 8.0版本之后 没有该文件)

CSV存储引擎

数据存储以CSV文件

特点

  • 不能定义没有索引、列定义必须为NOT NULL、不能设置自增列 —> 不适用大表或者数据的在线处理
  • CVS数据的存储用“,”隔开,可直接编辑CSV文件进行数据的编排 —> 数据安全性低(注:编辑之后,要生效使用flush table XXX命令)

应用场景

  • 数据的快速导出导入
  • 表格直接转换成CSV

Archive存储引擎

压缩协议进行数据的存储
数据存储为ARZ文件格式

特点

  • 只支持insert和select两种操作
  • 只允许自增ID列建立索引
  • 行级锁
  • 不支持事务
  • 数据占用磁盘少

应用场景

  • 日志系统
  • 大量的设备数据采集

Memory存储引擎

数据都是存储在内存中,IO效率要比其他引擎高很多,服务重启数据丢失,内存数据表默认只有16M

特点

  • 支持hash索引,B tree索引,默认hash(查找复杂度O(1))
  • 字段长度都是固定长度varchar(32)=char(32)
  • 不支持大数据存储类型字段,如blog,text
  • 表级锁

应用场景

  • 等值查找热度较高数据
  • 查询结果内存中的计算,大多数都是采用这种存储引擎,作为临时表存储需计算的数据

Myisam

  • MySql 5.5 版本之前的 默认存储引擎
  • 较多的系统表也还是使用这个存储引擎
  • 系统临时表也会用到Myisam存储引擎

特点

  • select count(*) from table 无需进行数据的扫描
  • 数据(MYD)和索引(MYI)分开存储
  • 表级锁
  • 不支持事务

Innodb

MySql 5.5及以后版本的默认存储引擎

特点

  • Its DML operations follow the ACID model [事务ACID]
  • Row-level locking[行级锁]
  • InnoDB tables arrange your data on disk to optimize queries based on primary keys[聚集索引(主键索引)方式进行数据存储]
  • To maintain data integrity, InnoDB supports FOREIGN KEY constraints[支持外键关系保证数据完整性]

官方介绍网址

https://dev.mysql.com/doc/refman/5.7/en/innodb-introduction.html

Myisam 和 Innodb 的索引差别

https://mp.weixin.qq.com/s/FUXPXKfKyjxAvMUFHZm9UQ

你可能感兴趣的