官网文档地址:MySQL :: MySQL 5.7 Reference Manual :: 14.1 Introduction to InnoDB
一、InnoDB 引擎
InnoDB
是一种兼顾高可靠性和高性能的通用存储引擎。在 MySQL 5.7 中,InnoDB
是默认的 MySQL 存储引擎。除非您配置了不同的默认存储引擎,否则发出CREATE TABLE不带ENGINE
子句的语句会创建一个InnoDB
表。
1、引擎的开启和设置
可以通过:查询引擎 SHOW ENGINES 或者 select * from information_schema.ENGINES
mysql-> SHOW ENGINES
或者
show variables like '%storage_engine%';
设置默认引擎:可以在/etc/my.cnf 文件下添加 :(测试下只有修改my.cnf文件方法,会生效)
default-storage-engine=INNODB //表示永久表(permanent tables)的默认存储引擎。
default_tmp_storage_engine ==INNODB //表示临时表的默认存储引擎。
或者 :
set default_storage_engine= INNODB;
由于更改默认存储引擎只会影响新创建的表,因此请运行应用程序安装和设置步骤以确认一切安装正确,然后使用应用程序功能确保数据加载、编辑和查询功能正常工作。
ALTER TABLE table_name ENGINE=InnoDB // 指定创建表的引擎
2、引擎禁用
disabled_storage_engines="MyISAM,FEDERATED"
默认情况下, disabled_storage_engines为空(不禁用任何引擎),但可以将其设置为一个或多个引擎的逗号分隔列表(不区分大小写)。任何在 value 中命名的引擎都不能使用 或者 来创建表或表空间 , 也不能与 or 一起使用 CREATE TABLE来 更改现有表或表空间的存储引擎。但是不限制现有表的其他 DDL 语句。
官方表示:
`InnoDB
此选项具有三态格式,可能值为OFF
、ON
或FORCE
。InnoDB无法禁用。该 [
--skip-innodb](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#option_mysqld_innodb) 选项已弃用且无效,并且使用它会导致警告。预计它会在未来的 MySQL 版本中被删除。这也适用于其同义词(
--innodb=OFF、
--disable-innodb`等)。
二、InnoDB 的主要优势
-
其 DML 操作遵循 ACID 模型,具有提交、回滚和崩溃恢复功能的事务以保护用户数据。
-
行级锁定和 Oracle 风格的一致性读取提高了多用户并发性和性能。
-
InnoDB
表在磁盘上排列数据以优化基于主键的查询。每个InnoDB
表都有一个称为聚集索引的主键索引,它组织数据以最小化主键查找的 I/O。 -
为了保持数据完整性,
InnoDB
支持FOREIGN KEY
约束。使用外键检查插入、更新和删除以确保它们不会导致相关表之间的不一致。
表 14.1 InnoDB 存储引擎特性
特征 | 支持 |
---|---|
B树索引 | 是的 |
备份/时间点恢复(在服务器中实现,而不是在存储引擎中。) | 是的 |
集群数据库支持 | 不 |
聚集索引 | 是的 |
压缩数据 | 是的 |
数据缓存 | 是的 |
加密数据 | 是(通过加密函数在服务器中实现;在 MySQL 5.7 及更高版本中,支持静态数据加密。) |
外键支持 | 是的 |
全文检索索引 | 是(MySQL 5.6 及更高版本提供对 FULLTEXT 索引的支持。) |
地理空间数据类型支持 | 是的 |
地理空间索引支持 | 是(MySQL 5.7 及更高版本提供对地理空间索引的支持。) |
哈希索引 | 否(InnoDB 在内部使用哈希索引来实现其自适应哈希索引功能。) |
索引缓存 | 是的 |
锁定粒度 | 排 |
MVCC | 是的 |
复制支持(在服务器中实现,而不是在存储引擎中。) | 是的 |
存储限制 | 64TB |
T-树索引 | 不 |
交易 | 是的 |
更新数据字典的统计信息 | 是的 |