🎈存储引擎其实就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。
🎈MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制
、索引技巧
、锁定水平
并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。它可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
查看所有存储引擎的信息
SHOW ENGINES
查看默认存储引擎
SHOW VARIABLES LIKE '%storage_engine%'
提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全
。InnoDB存储引擎中支持外键(FOREIGN KEY)。
缺点是其读写效率稍差,占用的数据空间相对比较大。
MyISAM插入速度快,对空间和内存的使用较低。
My ISAM不支持事务,对数据的完整性、并发性支持不够。
其使用存储在内存中的内容来创建表,而且所有数据也放在内存中,存取速度快。
MEMORY存储引擎的数据安全性较低,且不能创建过大的表。
我们首先需要考虑每一个存储引擎提供了哪些不同的核心功能。这种功能使我们能够把不同的存储引擎区别开来。我们一般把这些核心功能分为以下四类:
🍕 字段和数据类型
🍕锁机制
🍕建立索引
🍕事务处理
每种存储引擎都有各自的优势,不能笼统的说谁比谁更好,只有适合不适合。
🎨InnoDB存储引擎:用于事务处理应用程序,具有众多特性,包括ACID事务支持,支持外键。同时支持崩溃修复能力和并发控制。
🎨MyISAM存储引擎:管理非事务表,它提供高速存储和检索,以及全文搜索能力。
🎨MEMORY存储引擎:MEMORY存储引擎提供“内存中”表,MEMORY存储引擎的所有数据都在内存中,数据的处理速度快,但安全性不高。