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_packet | 64MB | 即时生效 | 最大允许数据包大小 |
mysql.explicit_defaults_for_timestamp | off | 重启 | TIMESTAMP 列默认值行为 |
mysql.on_error_rollback | on | 重启 | 错误时自动回滚事务 |
mysql.halo_mysql_version | 5.7.32-log | 重启 | 报告的 MySQL 版本号 |
mysql.column_name_case_control | 0 | 重启 | 列名大小写转换 |
mysql.sys_column_name_case_control | 0 | 重启 | 系统表列名大小写转换 |
mysql.support_multiple_table_update | on | 重启 | 支持多表 UPDATE |
mysql.multi_table_delete_methond | 1 | 重启 | 多表 DELETE 模式 |
mysql.create_trigger_for_auto_increment | on | 重启 | 自动创建自增触发器 |
mysql.convert_stopchar | off | 重启 | 转换终止字符 |
mysql.skip_utf8_verify | off | 重启 | 跳过 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 |