ITPub博客

首页 > 数据库 > MySQL > 14.1 InnoDB 存储引擎介绍

14.1 InnoDB 存储引擎介绍

翻译 MySQL 作者:kakaxi9521 时间:2020-10-28 16:55:15 0 删除 编辑

14.1 InnoDB 存储引擎介绍

InnoDB 存储引擎是一个通用的兼顾高可靠、高性能的存储引擎。 在Mysql5.7, InnoDB是默认的存储引擎, 除非你在创建表时指定存储引擎,create table ... engine = ...

使用Innodb 的好处

  • DML操作遵循ACID 模型, 支持transactions 特性,commit, rollback, and crash-recovery  保护用户数据。可以查看14.2 InnoDB 和ACID 模型章节。

  • 行级锁和 Oracle 风格的一致性读增强了多用户的并发和性能。 可以查看14.5 InnoDB 锁和事务模型章节。

  • InnoDB 表是依据主键组织的表,能优化查询。 每一个InnoDB 表都有一个主键索引称为clustered index 能做到查询时最小的I/O。 可以查看14.8.2.1 Clustered index 和Secondary 索引

  • 为了维护数据的完整性,InnoDB支持 Foreign Key 约束。 可以查看14.8.1.6 InnoDB 和 Foreign Key 约束。

想了解InnoDB 与其他存储引擎的信息,可以查看15 章。

14.1.1 使用InnoDB 表的好处

使用InnoDB 可以获得如下收益:

  • 在服务器因为硬件或软件故障crash的时候,在重启时无需做任何操作,InnoDB 会完成crash recovery 操作。

  • Innodb 会维护自己的buffer pool 缓存表和索引数据用于数据查询。 在专有数据库服务器,超过80%的物理内存常常被分配给Innodb buffer pool.

  • 使用foreign keys 保障数据的完整性。

  • 如果数据在磁盘或内存中损坏,会有checksum mechanism 警告。

  • 设计表时添加主键有助于提高order by , group by 和join的性能。

  • change buffering 有助于inserts,updates,deletes的优化。

  • 支持Adaptive Hash Index ,有助于查询性能。

  • 支持表和索引压缩

14.1.2 InnoDB 表的最佳实践

  • 给每张表添加主键有助于查询,或者设置auto-increment主键。

  • 外键关联的字段需要添加索引

  • 关闭自动提交 autocommit

  • 通过使用start transaction 和commit 将DML操作分组的放在事务里

  • 不要使用lock tables操作,使用select ... for update; 替代

  • 开启innodb_file_per_table 参数将数据和索引放在单独的表空间而不是system 表空间,innodb_file_per_table参数在5.6.6中是默认开启的

  • 尝试使用row_format = compressed参数

14.1.3 检查InnoDB 引擎是否可用

  • show engines;

14.1.4 Testing and Benchmarking with InnoDB

14.1.5 Turning off InnoDB

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2730520/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 14.5.1 Innodb 的锁
请登录后发表评论 登录
全部评论

注册时间:2009-04-13

  • 博文量
    136
  • 访问量
    179046