调整 MySQL严格模式以改善性能(关闭mysql的严格模式)

MySQL 严格模式选项可帮助数据库管理员保证数据库完整性和一致性,但有时候它们会严重影响性能。调节这些选项可以改善 MySQl 性能。

有关 MySQl 严格模式的许多验证选项可以在 MySQL 配置文件 `my.cnf` 中调整,可以在服务器初始化时生效。在 `[mysqld]` 部分设置如下系统变量:

sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

NO_ENGINE_SUBSTITUTION 禁止使用不受支持的存储引擎创建表,STRICT_TRANS_TABLES要求数据库对事务语句执行严格检查。

另外,也可以在不影响性能的情况下启用更多验证,只需要在 `my.cnf` 中设置 sql_mode 值如下:

sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

ERROR_FOR_DIVISION_BY_ZERO 会导致 MySQl 将零除错误作为异常处理,而 NO_AUTO_CREATE_USER 将禁止用户自动创建,确保了数据库安全。

MySQL 还提供了通过终端介面可以立即调整运行参数的方法,可以通过设置 global sql_mode 调整:

mysql> SET GLOBAL sql_mode=’ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;

最后,可以使用 MySQL 优化器分析来提升性能,就像使用 EXPLAIN 语句:

EXPLAIN select * from customer where name = ‘John Doe’;

只要按照上文给出的参数值适当调整,就可以确保数据库完整性和一致性,但不会影响性能。相反,MySQL管理员可以通过把自己设置为非严格模式来改善性能,从而实现最佳结果。


数据运维技术 » 调整 MySQL严格模式以改善性能(关闭mysql的严格模式)