前言
存储引擎其实就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,也可以根据自己的需要编写存储引擎。
① 什么是MySQL存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平,并且最终提供广泛的不同的功能和能力。通过选择不同的技术,能够获取额外的速度或者功能,从而改善应用的整体功能。
这些不同的技术以及配套的相关功能在MySQL中被称为存储引擎(也称作表类型)MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储信息、如何检索这些信息以及需要的数据结合什么性能和功能的时候,为其提供最大的灵活性。
② 查询mysql中支持的存储引擎
show engines;
查询结果中的 Engine 参数指的是存储引擎的名称; Support参数指的是MySQL是否支持该类引擎,YES表示支持;Comment 参数指对该引擎的评论。
从查询结果可以看出,MySQL支持多个存储引擎,其中InnoDB 为默认存储引擎。
MySQL支持很多类型的表,每种类型都有自己特定的作用、优点和缺点。MySQL还相应地提供了很多不同的存储引擎,可以以最适合于应用需求的方式存储数据。MySQL有多个可用的存储引擎,下面主要介绍InnoDB、MyISAM 和 MEMEORY三种存储引擎。
(一)InnoDB存储引擎
InnoDB 已经开发了十余年,遵循CNU通用公开许可(GPL)发行。InnoDB已经被一些重量级互联网公司所采用,如雅虎、Slashdot和Google,为用户操作非常大的数据库提供了一个强大的解决方案。InnoDB给MySQL的表提供了事务、回滚、崩溃修复能力和多版本并发控制的