mysql存储引擎

mysql5.7存储引擎

系列文章

存储引擎

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

功能对照表

FeatureMyISAMMemoryInnoDBArchiveNDB
B-tree indexesYesYesYesNoNo
Backup/point-in-time recovery(note 1)YesYesYesYesYes
Cluster database supportNoNoNoNoYes
Clustered indexesNoNoYesNoNo
Compressed dataYes (note 2)NoYesYesNo
Data cachesNoN/AYesNoYes
Encrypted dataYes (note 3)Yes (note 3)Yes (note 4)Yes (note 3)Yes (note 3)
Foreign key supportNoNoYesNoYes (note 5)
Full-text search indexesYesNoYes (note 6)NoNo
Geospatial data type supportYesNoYesYesYes
Geospatial indexing supportYesNoYes (note 7)NoNo
Hash indexesNoYesNo (note 8)NoYes
Index cachesYesN/AYesNoYes
Locking granularityTableTableRowRowRow
MVCCNoNoYesNoNo
Replication support (note 1)YesLimited (note 9)YesYesYes
Storage limits256TBRAM64TBNone384EB
T-tree indexesNoNoNoNoYes
TransactionsNoNoYesNoYes
Update statistics for data dictionaryYesYesYesYesYes

下图为谷歌翻译
在这里插入图片描述

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指的是并发条件下的多版本控制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值