课程名称:【TiDB 4.0 PCTA 学习笔记】 - 3.7.6 TiDB optimization (TiDB Server 优化)
学习时长:50m
课程收获:
了解 TiDB 性能优化涉及到的可以调节的配置和参数
课程内容:
一、操作系统参数
1、CPU
a、频率调节
通过cpufreq模块进行调节,设置为 perfirmance,最高频率模式。
cpupower frequency-set --governor perfirmance
b、Numa绑定
禁止cpu跨numa节点调用内存,造成额外开销
使用 numactl 调整
2、内存
a、禁止 THP
b、限制虚拟内存使用
dirty_ratio 默认20% ,高性能ssd(nvme)可以调小
dirty_backgroud _ratio 默认10%,高性能ssd可以调小
3、磁盘
a、i/o调度
echo noop > /sys/block/${SSD_DEV_NAME}/queue/scheduler
b、mount参数
设置 noatime、nodiratime,避免在文件/目录 读取的时候就更新元数据
二、TiDB系统变量
1、并发数量,通常调高参数并发性能会变好,但是cpu开销增大,具体问题需具体分析
2、批量的大小
TiDB查询结果是一批一批的处理,每批次最小单位为chunk
默认 chunk_size 是 1024 ,如果结果集很大,调大性能会好;
但是如果结果集很小,则会申请过多内存,造成内存过度浪费
通过 init 和 max 来配合需求,AP请求一般需要调大
3、限制
tidb_store_limit 过大会造成TiKV负载过高、请求超时,过小则造成系统资源无法充分利用,需做取舍
tidb_rerty_limit 乐观事物遇到写入冲突时的最大重置次数,过大会造成冲突加剧、性能下降;过小事物执行的成功率下降;最好调高,避免写入失败。
建议使用4.0默认是悲观事物。
4、backoff 遇到错误重试的等待时间
过大会增加延迟;过小会造成无谓的重试,消耗系统资源
三、TiDB配置参数
1、性能
2、TiKV Client
3、减少执行计划造成的计算开销
开启后,相同类型的SQL语句会使用相同的执行计划,而不会每次都重新计算,
代价则是当数据和查询条件发生变化时,执行计划不一定是最优的