InnoDB 表的最佳实践
每张表指定主键, 如果没有明显主键列, 使用 auto-increment 值.
使用 join 连接多张表时, 在连接列上使用相同数据类型, 并定义外键约束. 在 MySQL 中在列上定义外键约束时, 会自动在列上创建索引, 并且提供级联删除, 更新功能.
关闭自动提交.
分组 DML 操作.
不要使用 LOCK TABLES 语句, 如果要给行添加排它写锁, 可以通过 SELECT ... FOR UPDATE 语句实现.
enable file_per_table_names, 默认开启.
评估数据和访问模式是否受益于 InnoDB 表或者 Page Compression.enable Page Compression 不会牺牲 read/write 能力.
SQL Mode 配置 --sql_mode=NO_ENGINE_SUBSTITUTION 选项. 这个在创建表时, 如果指定的 --engine 选项有问题, 不会自动创建默认存储引擎的表.
InnoDB 测试和基准测试
如果测试现有表 (不使用 InnoDB), 将其存储引擎改为 InnoDB 后的影响. 有两种方法:
第一种方法: ALTER TABLE ... ENGINE=InnoDB
第二种方法: CREATE TABLE ... AS SELECT * FROM ... (这样对源表没有影响)
在真实负载下对整个应用程序评估性能, 安装最新版的 MySQL Server 并做基准测试.
测试整个应用程序的生命周期, 涉及安装, 高负载运行, 服务器重启. 通过 KILL 进程模拟数据库在繁忙状态下断电故障, 验证数据库是否可以在重启后成功恢复.
如果是复制环境, 测试复制中的各种配置.
来源: http://www.bubuko.com/infodetail-3433904.html