Skip to content

TDSQL 参数分类与说明

参数分类方法

按功能分类

  • 核心参数:影响数据库核心功能和性能的参数
  • 内存参数:控制内存分配和使用的参数
  • IO参数:控制磁盘IO操作的参数
  • 并发参数:控制并发连接和线程的参数
  • 日志参数:控制日志生成和管理的参数
  • 复制参数:控制主从复制的参数
  • 安全参数:控制数据库安全的参数
  • 字符集参数:控制字符集和排序规则的参数

按可修改性分类

  • 动态参数:可以在运行时修改,无需重启数据库
  • 静态参数:需要重启数据库才能生效
  • 只读参数:只能在配置文件中设置,运行时无法修改

按作用域分类

  • 全局参数:影响整个数据库实例
  • 会话参数:只影响当前会话
  • 局部参数:影响特定组件或功能

核心参数

实例基本参数

  • server_id:数据库实例的唯一标识,用于复制
  • port:数据库监听端口,默认3306
  • datadir:数据文件存储目录
  • socket:Unix套接字文件路径
  • pid_file:进程ID文件路径

连接参数

  • max_connections:最大允许的并发连接数
  • wait_timeout:非交互式连接的超时时间
  • interactive_timeout:交互式连接的超时时间
  • back_log:连接请求队列大小
  • max_connect_errors:允许的最大连接错误数

查询缓存参数

  • query_cache_type:查询缓存类型(0=关闭,1=开启,2=按需)
  • query_cache_size:查询缓存大小
  • query_cache_limit:查询缓存中单个结果集的最大大小
  • query_cache_min_res_unit:查询缓存块的最小大小

内存参数

InnoDB缓冲池参数

  • innodb_buffer_pool_size:InnoDB缓冲池大小,建议为物理内存的50-70%
  • innodb_buffer_pool_instances:缓冲池实例数量
  • innodb_old_blocks_pct:缓冲池中旧块的比例
  • innodb_old_blocks_time:旧块停留时间

日志缓冲区参数

  • innodb_log_buffer_size:InnoDB日志缓冲区大小
  • binlog_cache_size:二进制日志缓存大小
  • binlog_stmt_cache_size:语句级二进制日志缓存大小

临时表参数

  • tmp_table_size:内存临时表的最大大小
  • max_heap_table_size:内存表的最大大小

排序和连接参数

  • sort_buffer_size:排序缓冲区大小
  • join_buffer_size:连接缓冲区大小
  • read_buffer_size:顺序读取缓冲区大小
  • read_rnd_buffer_size:随机读取缓冲区大小

IO参数

InnoDB IO参数

  • innodb_flush_method:InnoDB IO刷新方法(O_DIRECT、fsync等)
  • innodb_flush_neighbors:刷新相邻页策略
  • innodb_io_capacity:InnoDB IO容量
  • innodb_io_capacity_max:InnoDB最大IO容量

日志刷盘参数

  • innodb_flush_log_at_trx_commit:事务提交时日志刷盘策略(0=每秒,1=每次,2=每次但只刷到操作系统缓存)
  • sync_binlog:二进制日志同步策略

文件IO参数

  • open_files_limit:允许打开的最大文件数
  • table_open_cache:表缓存大小
  • table_definition_cache:表定义缓存大小

并发参数

InnoDB并发参数

  • innodb_thread_concurrency:InnoDB并发线程数
  • innodb_read_io_threads:InnoDB读IO线程数
  • innodb_write_io_threads:InnoDB写IO线程数
  • innodb_purge_threads:InnoDB清除线程数

锁相关参数

  • innodb_lock_wait_timeout:InnoDB锁等待超时时间
  • innodb_deadlock_detect:是否启用死锁检测
  • max_lock_wait_timeouts:最大锁等待超时次数

事务参数

  • transaction_isolation:事务隔离级别
  • autocommit:是否自动提交事务
  • innodb_rollback_on_timeout:超时是否回滚事务

日志参数

错误日志参数

  • log_error:错误日志文件路径
  • log_error_verbosity:错误日志详细程度

二进制日志参数

  • log_bin:是否启用二进制日志
  • binlog_format:二进制日志格式(STATEMENT、ROW、MIXED)
  • binlog_row_image:行日志格式(FULL、MINIMAL、NOBLOB)
  • expire_logs_days:二进制日志保留天数
  • max_binlog_size:单个二进制日志文件的最大大小

慢查询日志参数

  • slow_query_log:是否启用慢查询日志
  • slow_query_log_file:慢查询日志文件路径
  • long_query_time:慢查询阈值(秒)
  • log_queries_not_using_indexes:是否记录未使用索引的查询

通用查询日志参数

  • general_log:是否启用通用查询日志
  • general_log_file:通用查询日志文件路径

复制参数

主库复制参数

  • log_slave_updates:是否记录从库复制的更新
  • gtid_mode:是否启用GTID复制
  • enforce_gtid_consistency:是否强制GTID一致性

从库复制参数

  • relay_log:中继日志文件前缀
  • relay_log_recovery:是否启用中继日志恢复
  • slave_skip_errors:从库跳过的错误类型
  • slave_parallel_workers:从库并行复制线程数
  • slave_preserve_commit_order:是否保持提交顺序

复制过滤参数

  • replicate_do_db:需要复制的数据库
  • replicate_ignore_db:忽略复制的数据库
  • replicate_do_table:需要复制的表
  • replicate_ignore_table:忽略复制的表
  • replicate_wild_do_table:需要复制的表(通配符)
  • replicate_wild_ignore_table:忽略复制的表(通配符)

安全参数

认证参数

  • skip_name_resolve:是否跳过主机名解析
  • skip_networking:是否只允许本地连接
  • require_secure_transport:是否要求安全连接

密码策略参数

  • validate_password_policy:密码验证策略(0=低,1=中,2=高)
  • validate_password_length:密码最小长度
  • validate_password_number_count:密码中数字的最小个数
  • validate_password_special_char_count:密码中特殊字符的最小个数
  • validate_password_mixed_case_count:密码中大小写字母的最小个数

权限参数

  • secure_file_priv:限制LOAD DATA等命令的文件路径
  • local_infile:是否允许LOAD DATA LOCAL命令

字符集参数

服务器字符集参数

  • character_set_server:服务器默认字符集
  • collation_server:服务器默认排序规则

客户端字符集参数

  • character_set_client:客户端字符集
  • character_set_connection:连接字符集
  • character_set_results:结果集字符集
  • character_set_filesystem:文件系统字符集

其他字符集参数

  • init_connect:连接初始化SQL,可用于设置会话字符集
  • skip_character_set_client_handshake:是否跳过客户端字符集握手

参数管理最佳实践

参数调整原则

  • 基于实际业务需求调整
  • 从小值开始,逐步调整
  • 监控调整后的效果
  • 记录参数调整历史
  • 定期评估参数设置

参数监控

sql
-- 查看参数设置
SHOW VARIABLES LIKE '%参数名%';

-- 查看全局参数
SHOW GLOBAL VARIABLES LIKE '%参数名%';

-- 查看会话参数
SHOW SESSION VARIABLES LIKE '%参数名%';

-- 查看参数是否可动态修改
SHOW VARIABLES WHERE Variable_name = '参数名' AND Read_only = 0;

参数修改

sql
-- 修改全局参数
SET GLOBAL 参数名 = 值;

-- 修改会话参数
SET SESSION 参数名 = 值;

-- 或简写
SET 参数名 = 值;

参数备份与恢复

  • 定期备份配置文件
  • 记录参数修改历史
  • 建立参数模板库
  • 实现参数的版本控制

常见问题(FAQ)

Q1: 如何查看TDSQL的所有参数?

A1: 查看所有参数的方法:

sql
-- 查看所有全局参数
SHOW GLOBAL VARIABLES;

-- 查看所有会话参数
SHOW SESSION VARIABLES;

-- 查看所有参数(全局+会话)
SHOW VARIABLES;

Q2: 如何判断参数是动态还是静态?

A2: 判断参数类型的方法:

sql
-- 方法1:查看参数是否可修改
SHOW VARIABLES WHERE Variable_name = '参数名' AND Read_only = 0;

-- 方法2:使用performance_schema
SELECT * FROM performance_schema.variables_info WHERE VARIABLE_NAME = '参数名';

-- 方法3:查阅官方文档

Q3: 如何优化InnoDB缓冲池大小?

A3: 优化InnoDB缓冲池大小的建议:

  • 建议设置为物理内存的50-70%
  • 对于大内存服务器,可设置为更大值
  • 考虑系统其他进程的内存需求
  • 监控缓冲池命中率
  • 根据业务负载调整大小

Q4: 如何设置合理的max_connections?

A4: 设置max_connections的建议:

  • 考虑服务器的硬件资源(CPU、内存)
  • 分析业务的并发连接需求
  • 监控连接使用率
  • 预留足够的资源给系统进程
  • 建议设置为系统能支持的最大连接数的80%

Q5: 如何修改静态参数?

A5: 修改静态参数的步骤:

  1. 修改配置文件
  2. 重启数据库实例
  3. 验证参数是否生效
  4. 监控系统运行状态

Q6: 如何备份和恢复参数配置?

A6: 备份和恢复参数配置的方法:

  • 备份配置文件(my.cnf)
  • 使用SHOW VARIABLES命令导出当前参数
  • 使用Performance Schema导出参数信息
  • 建立参数模板库
  • 使用配置管理工具管理参数