课程名称:课程版本(301)+ 3.7.6 TiDB optimization(TiDB Server 优化)
学习时长:40分钟
课程收获:学习了TiDB在操作系统参数,系统变量以及配置文件参数方面优化的重点
课程内容:
- 系统参数优化
- CPU
A) Frequency Scaling,避免动态调整,让CPU处在一个较高性能的环境,命令:cpupower frequency-set –governor performance
B) Numa Banding,避免numa架构下出现跨numa节点访问内存,需要将进程和CPU进行绑定,用numactl进行绑定 - Memory
A) Transparent Huge Page(THP),建议关闭此选择,避免出现内存访问延迟或者碎片规整带来的CPU占用率徒增的情况
B) Virtual Memory Parameters
dirty_ratio: 默认值是20%,在高性能SSD硬盘如NVMe设备,可以适当调低此值来改善内存回收的效率
dirty_background_ratio: 默认值是10%,在高性能SSD硬盘如NVMe设备,可以适当调低此值来改善内存回收的效率 - Disk
A) I/O Scheduler,对于SSD硬盘,建议设置为noop,操作命令echo noop > /sys/block/$SSD_DEV_NAME/queen/scheduler
B) Mount parameter, noatime选项可以防止读取文件的时候更新元数据,nodirtime选项可以防止读取目录的时候更新元数据
- TiDB系统变量优化
- Concurrency
A) tidb_distsql_scan_concurrency: 影响很多SQL语句,在系统比较空闲时,调整此参数可以增加TiKV访问region的并发数,提升访问速度,默认值是15,如果是OLTP系统可以调小一些,如果是OLAP系统可以调大一些,也可以通过观察执行计划table scan/index scan耗时较高的时候进行调整
B) tidb_index_lookup_concurrency:影响很多SQL语句,在系统比较空闲时,调整此参数可以增加TiKV访问region的并发数,提升访问速度,默认值是4,如果是OLTP系统可以调小一些,如果是OLAP系统可以调大一些,也可以通过观察执行计划indexLookUp耗时较高的时候进行调整
C) tidb_build_stats_concurrency: 是用来控制Analyze语句的并发度的
D) tidb_hash_join_concurrency: 是用来控制hash join算子的并发
E) tidb_index_lookup_join_concurrency: 是用来控制index lookup join算子的并发
F) tidb_ddl_reorg_worker_cnt: 是用来控制在线添加index时worker的数量,来提升添加index的速度 - Batch Size
A) tidb_init_chunk_size: 初始的chunk_size,默认值是32,就是一个批次查询最小单位返回32行,如果返回的行低于这个值,会浪费很多内存资源
B) tidb_max_chunk_size: 最大的chunk_size,默认值是1024,如果第一次查询后发现后面还有数据行,则会通过此参数来返回剩下的行数
C) tidb_index_join_batch_size: 控制index join的批次size,如果size大,消耗的资源也会多 - Limit
A) tidb_store_limit: 控制发送给一个TiKV节点上请求的数量,该参数设置太小,可能资源浪费,设置过高,负载过高
B) tidb_retry_limit: 乐观事务控制的最大重试数量,重试太多性能下降,重试太少事务成功率下降 - Backoff
A) tidb_backoff_weight: 这个参数会影响不同类型的backoff
B) tidb_backoff_lock_fast: 一次读请求等待锁的backoff时间,如果设置时间过长,会导致此次读请求耗时过高
- TiDB配置文件参数优化
- Performance
A) max-proc: TiDB可以使用的最大CPU核数
B) token-limit: 控制同时可以执行请求的数量
C) force-priority: 设置所有语句的优先级,针对特殊用途的tidb实例可以配置低优先级的语句执行
D) commiter- concurrency: 控制一个事务二阶段提交的时候最大并发数量,主要是针对100MB以上的大事务 - TiKV Client
grpc-connection-count: 控制每个TiKV和TiDB的最大连接数 - Prepared Plan Cache
A) Enabled:启用的话,可以重复利用执行计划,避免每次生成执行计划增加开销,可以用prepare语句检查是否开启
B) Capacity:缓存语句的数量
学习过程中参考的其他资料