跳到主要内容

MySQL引擎相关参数

Halo 数据库在 MySQL 兼容模式下提供了一系列 mysql.* 前缀的 GUC 参数,用于控制 MySQL 模式的兼容行为。以下按分类逐一介绍。

说明:除 mysql.max_allowed_packet 外,所有 mysql.* 参数均为启动参数(context=postmaster),修改后需 pg_ctl restart 重启数据库生效。

配置文件写法​

上述参数统一写入 $PGDATA/postgresql.conf 文件中。以下为当前环境的实际配置示例:

# MySQL 引擎相关参数
mysql.default_tenant = 'mysql'
mysql.max_allowed_packet = 512MB

参数修改后需重启数据库生效(mysql.max_allowed_packet 除外):

pg_ctl restart

参数汇总​

参数名默认值生效方式说明
mysql.default_tenant无(需配置)重启MySQL 模式的默认租户库
mysql.max_allowed_packet64MB即时生效最大允许数据包大小
mysql.explicit_defaults_for_timestampoff重启TIMESTAMP 列默认值行为
mysql.on_error_rollbackon重启错误时自动回滚事务
mysql.halo_mysql_version5.7.32-log重启报告的 MySQL 版本号
mysql.column_name_case_control0重启列名大小写转换
mysql.sys_column_name_case_control0重启系统表列名大小写转换
mysql.support_multiple_table_updateon重启支持多表 UPDATE
mysql.multi_table_delete_methond1重启多表 DELETE 模式
mysql.create_trigger_for_auto_incrementon重启自动创建自增触发器
mysql.convert_stopcharoff重启转换终止字符
mysql.skip_utf8_verifyoff重启跳过 UTF-8 校验
mysql> SHOW VARIABLES LIKE 'mysql.default_tenant';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| mysql.default_tenant | mysql |
+----------------------+-------+

mysql.max_allowed_packet

设置 MySQL 协议层允许接收的最大数据包大小,影响大 SQL 语句、大批量插入和 BLOB 数据的传输。此参数是唯一可在线修改的 MySQL 参数,支持通过 SET 语句在当前会话中即时调整。

属性值
默认值64MB(67108864)
生效方式即时生效(SET 语句)
mysql> SHOW VARIABLES LIKE 'mysql.max_allowed_packet';
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| max_allowed_packet | 536870912 |
+--------------------+-----------+

兼容行为控制​

mysql.explicit_defaults_for_timestamp

控制 TIMESTAMP 类型的默认值行为。设置为 on 时,TIMESTAMP 列不再自动添加 DEFAULT CURRENT_TIMESTAMP 或 ON UPDATE CURRENT_TIMESTAMP 属性,与 MySQL 5.6+ 的 explicit_defaults_for_timestamp 行为一致。

属性值
默认值off
生效方式重启生效

mysql.on_error_rollback

控制在 MySQL 模式下发生错误时是否自动回滚当前事务。

属性值
默认值on
生效方式重启生效

mysql.halo_mysql_version

设置 Halo 数据库向 MySQL 客户端报告的版本号,用于兼容依赖于特定 MySQL 版本的应用程序或驱动。

属性值
默认值5.7.32-log
生效方式重启生效
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.32-log |
+-----------+

标识符大小写控制​

mysql.column_name_case_control

控制 MySQL 模式下列名的大小写转换规则。

取值行为
0不转换,保留原始大小写
1转换为小写
2转换为大写
属性值
默认值0
生效方式重启生效

mysql.sys_column_name_case_control

控制系统表(information_schema 等)中列名的大小写转换规则,取值含义与 mysql.column_name_case_control 相同。

属性值
默认值0
生效方式重启生效

SQL 语法兼容​

mysql.support_multiple_table_update

控制是否支持 MySQL 风格的多表 UPDATE 语法(UPDATE t1, t2 SET ... WHERE ...)。

属性值
默认值on
生效方式重启生效

mysql.multi_table_delete_methond

控制多表 DELETE 的兼容模式。

取值行为
1标准 MySQL 多表删除语法
2替代兼容模式
属性值
默认值1
生效方式重启生效

mysql.create_trigger_for_auto_increment

控制是否在创建带有 AUTO_INCREMENT 属性的表时,自动创建用于自增行为的触发器。

属性值
默认值on
生效方式重启生效

字符集与编码​

mysql.convert_stopchar

控制是否自动转换终止字符(stop character),用于处理 MySQL 与 Halo 在特殊字符处理上的差异。

属性值
默认值off
生效方式重启生效

mysql.skip_utf8_verify

控制是否跳过对写入数据的 UTF-8 编码合法性校验。开启后可提高写入性能,但可能写入非法编码数据。

属性值
默认值off