mysql存储引擎

文章目录

  • mysql5.7存储引擎
    • 系列文章
    • 存储引擎
    • CSV
    • Archive
    • Memory
    • MyISAM
    • InnoDB(默认引擎)
    • Federated
    • NDB
    • Blackhole
    • Merge
    • Example
    • 功能对照表
      • note(注)

mysql5.7存储引擎

系列文章

  • mysql 性能优化 | 第一篇 mysql B+Tree
  • mysql 性能优化 | 第二篇 MySql Myisam和innodb对比 索引优化建议
  • mysql 性能优化 | 第三篇 mysql存储引擎
  • mysql 性能优化 | 第四篇 mysql数据库的隔离级别
  • mysql 性能优化 | 第五篇 mysql 表锁 行锁
  • mysql 性能优化 | 第六篇 mysql MVCC Undo Redo
  • mysql 性能优化 | 第七篇 mysql 执行路径 执行计划 慢查询
  • mysql 性能优化 | 第八篇 mysql 配置优化

存储引擎

  1. 插拔式的插件方式
  2. 存储引擎是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎
  3. 不管采用哪一种存储引擎,都会在数据区,产生对应的一个frm文件(表结构定义描述文件)
  4. 更多完整信息可以查看官网https://dev.mysql.com/doc/refman/5.7/en/myisam-storage-engine.html

CSV

数据存储以CSV文件

特点

  • CSV存储引擎不支持索引
  • 列定义必须为NOT NULL、不能设置自增列
  • 不能适用于大表或者数据的在线处理
  • 使用CSV存储引擎的表不支持分区
  • CSV数据的存储用逗号隔开,可直接编辑CSV文件进行数据的编排
    • 数据安全性低
    • 编辑之后,要使用flush table xxx命令,才能生效

应用场景

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

Archive

压缩协议进行数据的存储

数据存储为ARZ文件格式

特点

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

应用场景

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

Memory

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

特点

  • 支持hash索引,B tree索引,默认hash(查找复杂度O(1))
  • 字段长度都是固定长度,可变长度类型,例如 [VARCHAR]使用固定长度存储。
  • 不支持大数据存储类型字段如blog,text
  • 表级锁

应用场景

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

MyISAM

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

特点

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

InnoDB(默认引擎)

5.7版本的默认存储引擎,因为比较重要所以将官网英文原版copy过来,避免中文翻译丢失一下重要信息

  • The default storage engine in MySQL 5.7.

  • InnoDB is a transaction-safe (ACID compliant) storage engine for MySQL that has commit, rollback, and crash-recovery capabilities to protect user data.

    InnoDB是一种适用于MySQL的事务安全(ACID兼容)存储引擎,具有提交,回滚和崩溃恢复功能,可保护用户数据。

  • InnoDB row-level locking (without escalation to coarser granularity locks) and Oracle-style consistent nonlocking reads increase multi-user concurrency and performance.

    InnoDB行级锁定(没有升级到更粗略的粒度锁)和Oracle风格的一致非锁定读取增加了多用户并发性和性能。

  • InnoDB stores user data in clustered indexes to reduce I/O for common queries based on primary keys.

    InnoDB 将用户数据存储在聚集索引(主键索引)中,以减少基于主键的常见查询的I/O。

  • To maintain data integrity, InnoDB also supports FOREIGN KEY referential-integrity constraints.

    为了维护数据完整性,InnoDB还支持“外键”引用完整性约束。

Federated

提供链接单独的MySQL服务器以从许多物理服务器创建一个逻辑数据库的功能。

非常适合分布式或数据集市环境。

查询本地FEDERATED表会自动从远程(联合)表中提取数据。没有数据存储在本地表中。

有点类似oracle中的dblink。

NDB

此集群数据库引擎特别适用于需要尽可能高的正常运行时间和可用性的应用程序。

Blackhole

Blackhole存储引擎接受但不存储数据,类似于Unix /dev/null设备。查询始终返回空集。这些表可用于将DML语句发送到从属服务器的复制配置,但主服务器不保留其自己的数据副本。

Merge

使MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于数据仓库等VLDB环境。

Example

这个引擎作为MySQL源代码中的一个例子,说明了如何开始编写新的存储引擎。它主要是开发人员感兴趣的。存储引擎是一个什么都不做的“ 存根 ”。您可以使用此引擎创建表,但不能在其中存储数据或从中检索数据。

功能对照表

Feature MyISAM Memory InnoDB Archive NDB
B-tree indexes Yes Yes Yes No No
Backup/point-in-time recovery(note 1) Yes Yes Yes Yes Yes
Cluster database support No No No No Yes
Clustered indexes No No Yes No No
Compressed data Yes (note 2) No Yes Yes No
Data caches No N/A Yes No Yes
Encrypted data Yes (note 3) Yes (note 3) Yes (note 4) Yes (note 3) Yes (note 3)
Foreign key support No No Yes No Yes (note 5)
Full-text search indexes Yes No Yes (note 6) No No
Geospatial data type support Yes No Yes Yes Yes
Geospatial indexing support Yes No Yes (note 7) No No
Hash indexes No Yes No (note 8) No Yes
Index caches Yes N/A Yes No Yes
Locking granularity Table Table Row Row Row
MVCC No No Yes No No
Replication support (note 1) Yes Limited (note 9) Yes Yes Yes
Storage limits 256TB RAM 64TB None 384EB
T-tree indexes No No No No Yes
Transactions No No Yes No Yes
Update statistics for data dictionary Yes Yes Yes Yes Yes

下图为谷歌翻译
mysql存储引擎_第1张图片

note(注)

1.在服务器中实现,而不是在存储引擎中实现。

2.仅在使用压缩行格式时才支持压缩的MyISAM表。使用带MyISAM的压缩行格式的表是只读的。

3.通过加密功能在服务器中实现。

4.通过加密功能在服务器中实现; 在MySQL 5.7及更高版本中,支持数据静态表空间加密。

5.MySQL Cluster NDB 7.3及更高版本支持外键。

6.MySQL 5.6及更高版本中提供了InnoDB对FULLTEXT索引的支持。

7.MySQL 5.7及更高版本中提供了InnoDB对地理空间索引的支持。

8.InnoDB在内部利用哈希索引来实现其自适应哈希索引功能。

9.MVCC指的是并发条件下的多版本控制

你可能感兴趣的:(数据库,mysql,性能优化)