MySQL存储引擎

什么是存储引擎?

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行建立、查询、更新和删除数据操做。不一样的存储引擎提供不一样的存储机制、索引技巧、锁定水平等功能,使用不一样的存储引擎还能够得到特定的功能。

如今许多数据库管理系统都支持多种不一样的存储引擎。MySQL 的核心就是存储引擎。数据库

 

InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5 以后,InnoDB 做为默认存储引擎。缓存

MyISAM 是基于 ISAM 的存储引擎,并对其进行扩展,是在 Web、数据仓储和其余应用环境下最常使用的存储引擎之一。MyISAM 拥有较高的插入、查询速度,但不支持事务。

MEMORY 存储引擎将表中的数据存储到内存中,为查询和引用其余数据提供快速访问。
安全

MySQL 5.7 支持的存储引擎

MySQL 支持多种类型的数据库引擎,可分别根据各个引擎的功能和特性为不一样的数据库处理任务提供各自不一样的适应性和灵活性。在 MySQL 中,能够利用 SHOW ENGINES 语句来显示可用的数据库引擎和默认引擎。

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

MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE 等。服务器

可使用SHOW ENGINES语句查看系统所支持的引擎类型,结果如图所示。并发

Support 列的值表示某种引擎是否能使用,YES表示可使用,NO表示不能使用,DEFAULT表示该引擎为当前默认的存储引擎。高并发

如何选择 MySQL 存储引擎

不一样的存储引擎都有各自的特色,以适应不一样的需求,如表所示。为了作出选择,首先要考虑每个存储引擎提供了哪些不一样的功能。性能

功能 MylSAM MEMORY InnoDB Archive
存储限制 256TB RAM 64TB None
支持事务 No No Yes No
支持全文索引 Yes No No No
支持树索引 Yes Yes Yes No
支持哈希索引 No Yes No No
支持数据缓存 No N/A Yes No
支持外键 No No Yes No

能够根据如下的原则来选择 MySQL 存储引擎:spa

  • 若是要提供提交、回滚和恢复的事务安全(ACID 兼容)能力,并要求实现并发控制,InnoDB 是一个很好的选择。
  • 若是数据表主要用来插入和查询记录,则 MyISAM 引擎提供较高的处理效率。
  • 若是只是临时存放数据,数据量不大,而且不须要较高的数据安全性,能够选择将数据保存在内存的 MEMORY 引擎中,MySQL 中使用该引擎做为临时表,存放查询的中间结果。
  • 若是只有 INSERT 和 SELECT 操做,能够选择Archive 引擎,Archive 存储引擎支持高并发的插入操做,可是自己并非事务安全的。Archive 存储引擎很是适合存储归档数据,如记录日志信息可使用 Archive 引擎。

提示:使用哪种引擎要根据须要灵活选择,一个数据库中多个表可使用不一样的引擎以知足各类性能和实际需求。使用合适的存储引擎将会提升整个数据库的性能。日志

MySQL 默认存储引擎

InnoDB 是系统的默认引擎,支持可靠的事务处理。

使用下面的语句能够修改数据库临时的默认存储引擎code

SET default_storage_engine=< 存储引擎名 >

注意:将 MySQL 数据库的临时默认存储引擎修改成 其余的存储引擎时 ,可是当再次重启客户端时,默认存储引擎仍然是 InnoDB。

相关文章
相关标签/搜索