MySQL 9.0 发行说明
        
本节介绍使用 InnoDB 表时的最佳实践。
- 使用最常查询的列或使用自动递增值(如果没有明显的候选键)为每个表指定主键。 
- 只要从多个表中提取的数据基于这些表中相同的 ID 值,就使用连接。为了获得快速的连接性能,请在连接列上定义外键,并在每个表中使用相同的数据类型声明这些列。添加外键可确保引用列已建立索引,从而提高性能。外键还将删除和更新传播到所有受影响的表,并防止在子表中插入数据(如果父表中不存在相应的 ID)。 
- 关闭自动提交。每秒提交数百次会限制性能(受存储设备的写入速度限制)。 
- 通过使用 - START TRANSACTION和- COMMIT语句将它们括起来,将多组相关的 DML 操作分组到事务中。虽然您不想过于频繁地提交,但您也不希望发出运行数小时而未提交的大量- INSERT、- UPDATE或- DELETE语句批次。
- 不要使用 - LOCK TABLES语句。- InnoDB可以处理多个会话同时读取和写入同一个表,而不会牺牲可靠性或高性能。要获得对一组行的独占写访问权限,请使用- SELECT ... FOR UPDATE语法仅锁定您要更新的行。
- 启用 - innodb_file_per_table变量或使用通用表空间将表的数据和索引放入单独的文件中,而不是系统表空间中。- innodb_file_per_table变量默认启用。
- 评估您的数据和访问模式是否受益于 - InnoDB表或页面压缩功能。您可以压缩- InnoDB表,而不会牺牲读/写功能。
- 使用 - --sql_mode=NO_ENGINE_SUBSTITUTION选项运行服务器,以防止使用您不想使用的存储引擎创建表。