登录/注册
fuyao-w
23
0
0
浏览量
粉丝
关注
InnoDB
fuyao-w
2020-11-26 15:34:53
20
0

InnoDB的主要优势

表15.1 InnoDB存储引擎功能

特征 支持
B树索引
备份/时间点恢复(在服务器中实现,而不是在存储引擎中实现。)
群集数据库支持 没有
聚簇索引
压缩数据
数据缓存
加密数据 是(通过加密功能在服务器中实现;在MySQL 5.7及更高版本中,支持静态数据表空间加密。)
外键支持
全文搜索索引 是(在MySQL 5.6及更高版本中可以使用InnoDB对FULLTEXT索引的支持。)
地理空间数据类型支持
地理空间索引支持 是(在MySQL 5.7及更高版本中可以使用InnoDB对地理空间索引的支持。)
哈希索引 否(InnoDB在内部利用哈希索引来实现其自适应哈希索引功能。)
索引缓存
锁定粒度
MVCC
复制支持(在服务器中实现,而不是在存储引擎中实现。)
存储限制 64TB
T树索引 没有
交易
更新数据字典的统计信息

要比较InnoDBMySQL提供的其他存储引擎的功能,请参阅第16章备用存储引擎中存储引擎功能表 。

表优化

本节介绍使用InnoDB表时的最佳实践 。

  • 使用最常查询的列或列 指定每个表的主键, 如果没有明显的主键,则指定 自动增量值。

  • 根据来自这些表的相同ID值从多个表中提取数据的位置 使用连接。要获得快速连接性能,请在连接列上定义 外键,并在每个表中声明具有相同数据类型的列。添加外键可确保对引用的列建立索引,从而提高性能。外键还会将删除或更新传播到所有受影响的表,如果父表中不存在相应的ID,则会阻止在子表中插入数据。

  • 关闭自动提交。每秒承诺数百次会限制性能(受存储设备写入速度的限制)。

  • 分组组相关的DML 操作成 交易,通过包围他们START TRANSACTIONCOMMIT报表。虽然你不想过于频繁地提交,你也不想发出的巨大的批次 INSERTUPDATE或者DELETE,如果没有犯了几个小时运行的语句。

  • 不使用LOCK TABLES 语句。InnoDB可以同时处理多个会话,同时读取和写入同一个表,而不会牺牲可靠性或高性能。要获得对一组行的独占写访问权,请使用 SELECT ... FOR UPDATE语法仅锁定要更新的行。

  • 启用该 innodb_file_per_table选项或使用通用表空间将表的数据和索引放入单独的文件中,而不是 系统表空间

    innodb_file_per_table 默认情况下启用 该选项。

  • 评估您的数据和访问模式是否受益于InnoDB表或页面 压缩功能。您可以在InnoDB不牺牲读/写功能的情况下压缩表。

  • 使用选项运行服务器, --sql_mode=NO_ENGINE_SUBSTITUTION 以防止在使用ENGINE=子句中 指定的引擎出现问题时使用其他存储引擎创建表 CREATE TABLE

暂无评论