《MySQL技术内幕:InnoDB存储引擎第2版》——1.4 各存储引擎之间的比较

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第1章,第1.4节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 各存储引擎之间的比较

通过1.3节的介绍,我们了解了存储引擎是MySQL体系结构的核心。本节我们将通过简单比较几个存储引擎来让读者更直观地理解存储引擎的概念。图1-2取自于MySQL的官方手册,展现了一些常用MySQL存储引擎之间的不同之处,包括存储容量的限制、事务支持、锁的粒度、MVCC支持、支持的索引、备份和复制等。
可以看到,每种存储引擎的实现都不相同。有些竟然不支持事务,相信在任何一本关于数据库原理的书中,可能都会提到数据库与传统文件系统的最大区别在于数据库是支持事务的。而MySQL数据库的设计者在开发时却认为可能不是所有的应用都需要事务,所以存在不支持事务的存储引擎。更有不明其理的人把MySQL称做文件系统数据库,其实不然,只是MySQL数据库的设计思想和存储引擎的关系可能让人产生了理解上的偏差。
可以通过SHOW ENGINES语句查看当前使用的MySQL数据库所支持的存储引擎,也可以通过查找information_schema架构下的ENGINES表,如下所示:

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

下面将通过MySQL提供的示例数据库来简单显示各存储引擎之间的不同。这里将分别运行以下语句,然后统计每次使用各存储引擎后表的大小。

mysql>CREATE TABLE mytest Engine=MyISAM
    ->AS SELECT * FROM salaries;
Query OK, 2844047 rows affected (4.37 sec)
Records: 2844047  Duplicates: 0  Warnings: 0

mysql>ALTER TABLE mytest Engine=InnoDB;
Query OK, 2844047 rows affected (15.86 sec)
Records: 2844047  Duplicates: 0  Warnings: 0

mysql>ALTER TABLE mytest Engine=ARCHIVE;
Query OK, 2844047 rows affected (16.03 sec)
Records: 2844047  Duplicates: 0  Warnings: 0
AI 代码解读

通过每次的统计,可以发现当最初表使用MyISAM存储引擎时,表的大小为40.7MB,使用InnoDB存储引擎时表增大到了113.6MB,而使用Archive存储引擎时表的大小却只有20.2MB。该例子只从表的大小方面简单地揭示了各存储引擎的不同。
注意 MySQL提供了一个非常好的用来演示MySQL各项功能的示例数据库,如SQL Server提供的AdventureWorks示例数据库和Oracle提供的示例数据库。据我所知,知道MySQL示例数据库的人很少,可能是因为这个示例数据库没有在安装的时候提示用户是否安装(如Oracle和SQL Server)以及这个示例数据库的下载竟然和文档放在一起。用户可以通过以下地址找到并下载示例数据库:http://dev.mysql.com/doc/

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
1408
分享
相关文章
《MySQL技术内幕:InnoDB存储引擎第2版》——2.6 InnoDB关键特性
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第2章,第2.6节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1658 0
《MySQL技术内幕:InnoDB存储引擎第2版》——2.1 InnoDB存储引擎概述
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第2章,第2.1节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2195 0
《MySQL技术内幕:InnoDB存储引擎第2版》——第1章 MySQL体系结构和存储引擎
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第1章,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1147 0
《MySQL技术内幕:InnoDB存储引擎第2版》——2.2 InnoDB存储引擎的版本
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第2章,第2.2节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1836 0
《MySQL技术内幕:InnoDB存储引擎第2版》——3.7 小结
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第3章,第3.7节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1416 0
《MySQL技术内幕:InnoDB存储引擎第2版》——导读
过去这些年我一直在和各种不同的数据库打交道,见证了MySQL从一个小型的关系型数据库发展为各大企业的核心数据库系统的过程,并且参与了一些大大小小的项目的开发工作,成功地帮助开发人员构建了可靠的、健壮的应用程序。
1914 0
《MySQL技术内幕:InnoDB存储引擎第2版》——2.8 小结
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第2章,第2.8节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1367 0
《MySQL技术内幕:InnoDB存储引擎第2版》——1.6 小结
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第1章,第1.6节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1451 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等