14.1.2 Best Practices for InnoDB Tables
InnoDB表最佳实践:
这个章节描述使用InnoDB表最佳实践:
1.指定一个主键用于每个表使用最多查询的列或者多列,或者一个自动递增值 如果没有明显的主键列
2.使用关联无论数据是从多个表拉出基于表示ID只从那些表。
对于快速链接性能, 定义外键在关键列,定义那些列有相同的数据类型在每个表。
增加外键组确保引用的列被索引,可以改善性能。
3.关掉自动提交, 每秒数百次提交堵塞性能
4.相关DML 分组操作到一个事务,通过开始事务 START TRANSACTION and COMMIT statements.
这样你不需要提交太频繁,因此你不需要执行大量的INSERT, UPDATE, or DELETE statements的批处理语句,运行多个小时而不提交
5.不要使用LOCK TABLES语句, InnoDB 可以处理大量的session 都读取和写到相同的表at once,
不需要牺牲可靠性或者高可用性。 得到排它写访问对于一组记录,使用SELECT ... FOR UPDATE语句来只锁定你想要的记录
6. 启动 innodb_file_per_table 选项来防止数据和索引对于单个表到单独的文件,
代替在一个巨大的系统表空间。
这个设置是需要使用一些其他的功能,比如表压缩和快速truncate
7. innodb_file_per_table 选项在MYSQL 5.6.6默认启动