官网文档地址: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-树索引 | 不 | 交易 | 是的 | 更新数据字典的统计信息 | 是的 |
|