外观
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: 修改静态参数的步骤:
- 修改配置文件
- 重启数据库实例
- 验证参数是否生效
- 监控系统运行状态
Q6: 如何备份和恢复参数配置?
A6: 备份和恢复参数配置的方法:
- 备份配置文件(my.cnf)
- 使用SHOW VARIABLES命令导出当前参数
- 使用Performance Schema导出参数信息
- 建立参数模板库
- 使用配置管理工具管理参数
