数据库组成存储引擎

举报
xcc-2022 发表于 2022/07/26 10:45:52 2022/07/26
【摘要】 3.2 MySQL存储引擎存储引擎在MySQL底层以组件的形式提供,不同的存储引擎提供的存储机制、索引的存放方式和锁粒度等不同。本节就对MySQL中常用的存储引擎进行简单的介绍。3.2.1 查看MySQL中的存储引擎可以在MySQL命令行中输入如下命令,查看当前MySQL支持的存储引擎。mysql> SHOW ENGINES \G*************************** 1. ...

3.2 MySQL存储引擎

存储引擎在MySQL底层以组件的形式提供,不同的存储引擎提供的存储机制、索引的存放方式和锁粒度等不同。本节就对MySQL中常用的存储引擎进行简单的介绍。


3.2.1 查看MySQL中的存储引擎

可以在MySQL命令行中输入如下命令,查看当前MySQL支持的存储引擎。


mysql> SHOW ENGINES \G
*************************** 1. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 2. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 5. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 8. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 9. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
9 rows in set (0.00 sec)

结果显示,当前MySQL中总共有9种存储引擎,除了FEDERATED存储引擎外,还支持8种存储引擎。

注意:笔者使用的MySQL版本为8.0.18。


3.2.2 常用存储引擎介绍

MySQL中常用的存储引擎有InnoDB、MyISAM、MEMORY、ARCHIVE和CSV,本节对这些存储引擎进行简单的介绍。

1.InnoDB存储引擎

InnoDB存储引擎的特点如下:

·支持事务。

·锁级别为行锁,比MyISAM存储引擎支持更高的并发。

·能够通过二进制日志恢复数据。

·支持外键操作。

·在索引存储上,索引和数据存储在同一个文件中,默认按照B+Tree组织索引的结构。同时,主键索引的叶子节点存储完整的数据记录,非主键索引的叶子节点存储主键的值。

·在MySQL 5.6版本之后,默认使用InnoDB存储引擎。

·在MySQL 5.6版本之后,InnoDB存储引擎支持全文索引。

2.MyISAM存储引擎

MyISAM存储引擎的特点如下:

·不支持事务。

·锁级别为表锁,在要求高并发的场景下不太适用。

·如果数据文件损坏,难以恢复数据。

·不支持外键。

·在索引存储上,索引文件与数据文件分离。

·支持全文索引。

3.MEMORY存储引擎

MEMORY存储引擎的特点如下:

·不支持TEXT和BLOB数据类型,只支持固定长度的字符串类型。例如,在MEMORY存储引擎中,会将VARCHAR类型自动转化成CHAR类型。

·锁级别为表锁,在高并发场景下会成为瓶颈。

·通常会被作为临时表使用,存储查询数据时产生中间结果。

·数据存储在内存中,重启服务器后数据会丢失。如果是需要持久化的数据,不适合存储在MEMORY存储引擎的数据表中。

4.ARCHIVE存储引擎

ARCHIVE存储引擎的特点如下:

·支持数据压缩,在存储数据前会对数据进行压缩处理,适合存储归档的数据。

·只支持数据的插入和查询,插入数据后,不能对数据进行更改和删除,而只能查询。

·只支持在整数自增类型的字段上添加索引。

5.CSV存储引擎

CSV存储引擎的特点如下:

·主要存储的是.csv格式的文本数据,可以直接打开存储的文件进行编辑。

·可以将MySQL中某个数据表中的数据直接导出为.csv文件,也可以将.csv文件导入数据表中。

注意:笔者只是列举了MySQL中常用的一些存储引擎,有关其他存储引擎的知识,读者可以参考MySQL官方文档进行了解与学习,网址如下:

https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html

https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。