我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 选择合适的存储引擎

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 选择合适的存储引擎

对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种何时当前业务需求的存储引擎,而 MySQL 中支持的存储引擎又有很多种,那么 MySQL 中分别又有那些,怎么优雅的使用呢?

划分引擎原因

在文件系统中,MySQL 将每个数据库(也可以称之为 schema )保存为数据目录下的一个子目录。创建表时,MySQL 会在数据库子目录下创建一个和表同名的 .frm 文件保存表的定义。例如创建一个名为 DebugTable 的表,MySQL 会在 DebugTable.frm 文件中保存该表的定义。

因为 MySQL 使用文件系统的目录和文件来保存数据库和表的定义,大小写敏感性和具体的平台密切相关。在 Windows 系统中,大小写是不敏感的;而在类 Unix 系统中则是敏感的。不同的存储引擎保存数据和索引的方式是不同的,但表的定义则是在 MySQL 服务层wk统一处理的。

查看支持引擎

想了解 MySQL 中支持的引擎的情况,可以使用如下命令查看:


show engines;

结果如下(MySQL版本:Ver 8.0.19):


mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine       | Support | Comment                            | Transactions | XA  | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED     | NO   | Federated MySQL storage engine                 | NULL     | NULL | NULL    |
| MEMORY       | YES   | Hash based, stored in memory, useful for temporary tables   | NO      | NO  | NO     |
| InnoDB       | DEFAULT | Supports transactions, row-level locking, and foreign keys   | YES     | YES | YES    |
| PERFORMANCE_SCHEMA | YES   | Performance Schema                       | NO      | NO  | NO     |
| MyISAM       | YES   | MyISAM storage engine                     | NO      | NO  | NO     |
| MRG_MYISAM     | YES   | Collection of identical MyISAM tables             | NO      | NO  | NO     |
| BLACKHOLE     | YES   | /dev/null storage engine (anything you write to it disappears) | NO      | NO  | NO     |
| CSV        | YES   | CSV storage engine                       | NO      | NO  | NO     |
| ARCHIVE      | YES   | Archive storage engine                     | NO      | NO  | NO     |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

存储引擎分类

MySQL 存储引擎分类有 MyISAM、InnoDB、Memory、Merge等,可以看上面表中列出的支持引擎,但是其中最为常用的就是 MyISAM 和 InnoDB 两个引擎,其中针对于以上讲到的存储引擎,如下表进行对比:

MyISAM 与 InnoDB 区别

两种类型最主要的差别是InnoDB支持事务处理与外键和行级锁。

  1. InnoDB 可借由事务日志( Transaction Log )来恢复程序崩溃( crash ),或非预期结束所造成的数据错误;而 MyISAM 遇到错误,必须完整扫描后才能重建索引,或修正未写入硬盘的错误。
  2. InnoDB 的修复时间,一般都是固定的,但 MyISAM 的修复时间,则与数据量的多寡成正比。
  3. 相对而言,随着数据量的增加,InnoDB 会有较佳的稳定性。
  4. MyISAM 必须依靠操作系统来管理读取与写入的缓存,而 InnoDB 则是有自己的读写缓存管理机制。( InnoDB 不会将被修改的????立即交给操作系统)因此在某些情况下,InnoDB 的数据访问会比 MyISAM 更有效率。
  5. InnoDB 目前并不支持 MyISAM 所提供的压缩与 terse row formats(简洁的行格式) ,所以对硬盘与高速缓存的使用量较大。
  6. 当操作完全兼容 ACID(事务)时,虽然 InnoDB 会自动合并数笔连接,但每次有事务产生时,仍至少须写入硬盘一次,因此对于某些硬盘或磁盘阵列,会造成每秒 200 次的事务处理上限。若希望达到更高的性能且保持事务的完整性,就必使用磁盘缓存与电池备援。当然 InnoDB 也提供数种对性能冲击较低的模式,但相对的也会降低事务的完整性。而MyISAM则无此问题,但这并非因为它比较先进,这只是因为它不支持事务。

应用场景

  • MyISAM 管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的 SELECT 查询,那么 MyISAM 是更好的选择。
  • InnoDB 用于事务处理应用程序,具有众多特性,包括 ACID 事务支持。如果应用中需要执行大量的 INSERT 或 UPDATE 操作,则应该使用 InnoDB,这样可以提高多用户并发操作的性能。

以上就是MySQL 存储引擎的选择的详细内容,更多关于MySQL 存储引擎的资料请关注自学编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 选择合适的存储引擎

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL 选择合适的存储引擎

对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种何时当前业务需求的存储引擎,而 MySQL 中支持的存储引擎又有很多种,那么 MySQL 中分别又有那些,怎么优雅的使用呢? 划分引擎原因 在文件系统中,MySQL 将每个数据
2022-05-24

MySQL存储引擎选择

MySQL支持多种存储引擎,每种引擎都有其独特的特点和适用场景。选择合适的存储引擎可以提高数据库的性能和可靠性。以下是MySQL中几种常用存储引擎的简要介绍:InnoDB存储引擎特点:支持事务处理、行级锁、外键约束,提供崩溃恢复机制,适合
MySQL存储引擎选择
2024-10-20

MySQL存储引擎在Linux的选择

在MySQL中,存储引擎是用于存储和处理数据的核心组件。在Linux系统中,MySQL支持多种存储引擎,包括InnoDB、MyISAM、MEMORY、CSV等。以下是一些常见的MySQL存储引擎在Linux中的选择建议:InnoDB:Inn
MySQL存储引擎在Linux的选择
2024-08-16

MySQL的存储引擎InnoDB选择了B+ 树

我们知道数据的存储和检索是两个很重要的功能,当我们的数据量大了,怎么能快速的检索数据呢,答案是使用索引,可索引具体的技术实现有很多,选择哪一种呢,我就以mysql为例记录下它为什么选择了B+树作为索引的实现方式。 1.  索引简介   索引是一种用于快速查询行
MySQL的存储引擎InnoDB选择了B+ 树
2015-08-15

MongoDB的存储引擎怎么选择

MongoDB支持多种存储引擎,其中最常用的是WiredTiger和In-Memory存储引擎。WiredTiger是MongoDB的默认存储引擎,它提供了高性能和可靠性,并支持事务操作。In-Memory存储引擎则是将数据存储在内存中,适
MongoDB的存储引擎怎么选择
2024-05-07

MySQL INSERT锁与数据库存储引擎选择

在MySQL中,INSERT操作会涉及到行级锁以及存储引擎的选择。行级锁:在MySQL中,插入操作会涉及到行级锁。当一个INSERT操作执行时,MySQL会在表中插入新的行,并在该行上设置一个写锁,其他事务将无法同时对这行进行修改。这样可以
MySQL INSERT锁与数据库存储引擎选择
2024-08-19

优化阿里云数据库MySQL性能从选择合适的存储引擎到定期维护

在云计算时代,MySQL数据库已经成为许多企业不可或缺的一部分。然而,随着数据量的增加和业务需求的多样化,MySQL数据库的性能问题逐渐显现。本文将从选择合适的存储引擎、优化查询语句、合理设置参数、定期维护等方面,详细阐述如何优化阿里云数据库MySQL性能,提高业务运行效率。一、选择合适的存储引擎存储引擎是MyS
优化阿里云数据库MySQL性能从选择合适的存储引擎到定期维护
2023-11-12

3,mysql的存储引擎

1,什么是存储引擎,存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以成为表类型。在Oracle和SQL Server等数据库中只
2023-01-31

MySQL存储引擎选择与优化的项目经验分享

MySQL存储引擎选择与优化的项目经验分享在开发和管理MySQL数据库时,选择合适的存储引擎并进行相关的优化是至关重要的。存储引擎直接影响数据库的性能、可靠性和可扩展性。本文将分享我在项目中的MySQL存储引擎选择和优化的经验。一、存储引擎
MySQL存储引擎选择与优化的项目经验分享
2023-11-02

在创建MySQL表时,如何指定我选择的存储引擎而不是使用默认的存储引擎InnoDB?

创建MySQL表时,可以按如下方式指定存储引擎 -mysql> CREATE TABLE Student(id INTEGER PRIMARY KEY, Name VARCHAR(15))-> ENGINE = MyISAM;Query
2023-10-22

MySQL 支持的存储引擎

参考资料:C语言中文网存储引擎:数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。注:InnoDB 事务型数据库
MySQL 支持的存储引擎
2015-06-20

编程热搜

目录