ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

浅谈——MySQL存储引擎

2019-12-03 23:00:09  阅读:187  来源: 互联网

标签:存储 浅谈 Memory 引擎 InnoDB MyISAM MySQL


博文大纲:

  • 一、MyISAM存储引擎;
  • 二、InnoDB存储引擎;
  • 三、Memory存储引擎特点;
  • 四、如何选择合适的存储引擎?

前言

数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。

MySQL提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在MySQL中,不需要在整个服务器中使用一种引擎,针对具体要求可以对每一个表使用不同的存储引擎。

  • 存储引擎说白了就是数据存储的格式,不同的存储引擎功能不同,占用的空间大小不同,读取性能也不同;
  • 数据库存储引擎是数据库底层软件组件,不同的存储引擎提供不同的存储机制;
  • 在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,可以对每一个表使用不同的存储引擎;
  • MySQL 支持多种存储引擎,如 InnoDB 、MyISAM 、Memory 、Merge 、Archive 、CSV 、Federated 等等。

一、MyISAM存储引擎

1、MyISAM存储引擎的特点

  • MySQL 5.5 之前默认使用 MyISAM 引擎,MySQL 5.5 之后默认使用 InnoDB 引擎;
  • MyISAM 引擎读取速度较快,占用资源相对较少,不支持事务,不支持外键约束,但支持全文索引;
  • 读写互相阻塞,也就是说读数据的时候你就不能写数据,写数据的时候你就不能读数据;
  • MyISAM 引擎只能缓存索引,而不能缓存数据。

2、MyISAM适用场景

  • 不需要事务支持的业务,例如转账就不行;
  • 适用于读数据比较多的业务,不适用于读写频繁的业务;
  • 并发相对较低、数据修改相对较少的业务;
  • 硬件资源比较差的机器可以考虑使用 MyISAM 引擎。

二、InnoDB存储引擎

1、InnoDB存储引擎的特点

  • 事务型数据库的首选引擎,支持事务安全表,支持行锁定和外键,MySQL 5.5.5 版本之后,InnoDB 作为默认存储引擎;
  • 具有提交、回滚和崩溃恢复能力的事务安全存储引擎,能处理巨大数据量,性能及效率高,完全支持外键完整性约束;
  • 具有非常高效的缓存特性,能缓存索引也能缓存数据,对硬件要求比较高;
  • 使用 InnoDB 时,将在 MySQL 数据目录下创建一个名为 ibdata1 的 10MB 大小的自动扩展数据文件,以及两个名为 ib_logfile0 和 ib_logfile1 的 5MB 大小的日志文件。

2、InnoDB 适用场景

  • 需要事务支持的业务、高并发的业务
  • 数据更新较为频繁的场景,比如 BBS、SNS、微博等
  • 数据一致性要求较高的业务,比如充值转账、银行卡转账

三、Memory存储引擎特点

  • Memory 存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问;
  • Memory 存储引擎执行 HASH 和 BTREE 索引,不支持 BLOB 和 TEXT 列,支持 AUTO_INCREMENT 列和对可包含 NULL 值得列的索引;
  • 当不再需要 Memory 表的内容时,要释放被 Memory 表使用的内存,应该执行 DELETE FROM 或 TRUNCATE TABLE ,或者删除整个表。

四、如何选择合适的存储引擎?

不同的业务需求需要选择不同的存储引擎,具体可以参照以下几点来进行选择:

  • 如果要提供提交、回滚和崩溃恢复能力的事务安全能力,并要求实现并发控制,InnoDB 是个很好的选择;
  • 如果数据表主要用来插入和查询记录,则 MyISAM 引擎能提供较高的处理效率;
  • 如果只是临时存放数据,数据量不大,并且不需要较高的安全性,可以选择将数据保存在内存中的 Memory 引擎,MySQL 使用该引擎作为临时表,存放查询的中间结果;
  • 如果只有 INSERT 和 SELECT 操作,可以选择 Archive 引擎,支持高并发的插入操作,如记录日志信息可以使用 Archive 引擎。

主要的三个数据引擎所支持的功能如下表所示:

浅谈——MySQL存储引擎

———————— 本文至此结束,感谢阅读 ————————

标签:存储,浅谈,Memory,引擎,InnoDB,MyISAM,MySQL
来源: https://blog.51cto.com/14154700/2455842

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有