MySQL 8 InnoDB 存储引擎

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 进程模拟数据库在繁忙状态下断电故障,验证数据库是否可以在重启后成功恢复。

如果是复制环境,测试复制中的各种配置。

猜你喜欢

转载自www.cnblogs.com/xinzhizhu/p/12355232.html