课程名称:3.7.6 TiDB Server 优化
学习时长:60min
课程收获:全面了解 了TiDB 性能优化涉及到的可以调节的配置和参数
课程内容:
- 操作系统参数
- CPU
- 频率调整
- cpufreq是可动态调整CPU频率的模块,有五种模式,应使用performance模式
- cpupower frequency-set --governor performance
- Numa(Non-Uniform Memory Access)绑定
- 为避免跨NUMA访问内存,将CPU核和thread/process绑定
- numactl
- 频率调整
- Memory
- THP(Transparent Huge Page,透明大页)
- 对数据库来说,不推荐使用THP,因为数据库经常会进行稀疏内存访问,而不是连续内存访问
- 如果高阶内存碎片严重,分配THP时会有高延迟
- 如果THP开启了直接规整,CPU使用率激增
- 虚拟内存参数
- dirty_ratio,默认20%,通常不需要调节,对于高性能SSD,降低该参数可以改善内存回收效率
- dirty_background_ratio,默认10%,通常不需要调节,对于高性能SSD,降低该参数有助于改善内存回收效率
- THP(Transparent Huge Page,透明大页)
- Disk
- I/O Scheduler
- 决定在存储设备上运行操作时间及时长,也叫I/O elevator
- 高性能SSD,推荐设置为noop
- echo noop > /sys/block/${SSD_DEV_NAME}/queue/scheduler
- 挂载参数
- noatime选项如果打开,读取文件时会禁用元数据更新
- nodiratime选项如果打开,读取目录时会禁用元数据更新
- I/O Scheduler
- CPU
- TiDB 系统变量
- 通过SQL语句修改,大部分是global
- concurrency
- tidb_distsql_scan_concurrency
- 默认15
- 影响大多数语句
- 控制TableScan或IndexScan算子的并发
- tidb_index_lookup_concurrency
- 控制IndexLookUp算子的并发
- tidb_build_stats_concurrency
- 控制analyze语句的并发
- tidb_hash_join_concurrency
- 控制HashJoin算子并发
- tidb_index_lookup_join_concurrency
- 控制IndexLookUpJoin算子并发
- tidb_ddl_worker_cnt
- 控制DDL新建索引并发
- tidb_distsql_scan_concurrency
- batch size
- TiDB以chunk为单位处理数据,TP请求可设置小一些,AP请求可设置大一些
- tidb_init_chunk_size
- tidb_max_chunk_size
- tidb_index_join_batch_size
- limit
- tidb_store_limit
- 控制发送到TiKV节点的并发请求数
- tidb_retry_limit
- 控制乐观事务的最大重试次数
- tidb_store_limit
- backoff
- 可重试的错误,重试前的等待时间,设置大会增加延迟,设置小,造成无谓的重试
- tidb_backoff_weight
- 重试等待时间的权重系数
- 默认值2
- 网络差情况下,适当增加,缓解网络超时
- 若想尽快的收到报错信息,适当减少
- tidb_backoff_lock_fast
- 读请求遇到锁时等待时间
- TiDB配置文件参数
- Performance
- max-proc:TiDB使用CPU核数
- token-limit:可以并发执行请求的会话数
- force-priority:设置语句的优先级
- 常用于对单独的TiDB节点设置低优先级来运行AP请求
- commiter-concurrency:一个事务中允许的两阶段提交请求的最大并发数
- 针对大事务进行并发控制
- TiKV Client
- grpc-connection-count:TiDB与每个TiKV建立连接的最大数量
- Prepared Plan Cache
- 减少执行计划的开销
- enabled:是否开启PREPARE语句的Plan Cache
- capacity:缓存语句的数量
- Performance