【TiDB 4.0 PCTA 学习笔记】- 3.7.6 TiDB optimization(TiDB Server 优化)@2班+胡宏强

课程名称:课程版本(101/201/301)+ 3.7.6 TiDB optimization(TiDB Server 优化)

学习时长:30

课程内容:

一、Operating System parametes

  • CPU
    • Frequency Scaling
      • 动态调整CPU频率模块,有五种模式,为了保证服务性能应该使用performance模式,将CPU频率固定在最高频率。动态调节目的是为了节省CPU耗电,对业性能有负面影响
      • 如果想设置性能模式通过cpupower frequency-set --governor performance参数实现
    • Numa Binding
      • 在一个服务器上有多个不同的Numa节点,每个Numa节点的CPU在访问自己内存时延迟很低,远程访问其他Numa节点延迟很高。通过绑定进程和Numa节点来避免性能开销
      • 通过numactl命令来进行绑定
  • Memory
    • Transparent Huge Page(THP)
      • 与其说是优化不如说是避免性能的劣化,当打开THP时,对数据库应用来说是会有明显的的性能降低,建议关闭此参数
    • Virtual Memory Parameters
      • dirty_ratio当脏的内存总量到达系统内存总量的百分比时,系统将使用PDflash操作,将脏内存写入磁盘,默认值为20%,对于高性能SSD降低持有率可以提高内存回收效率
      • dirty_background_ratio当脏的内存总量到达系统内存总量的百分比时,系统将脏内存写入磁盘,默认值为10%,对于高性能SSD降低持有率可以提高内存回收效率
  • Disk
    • I/O scheduler
      I/O调度程序用于确定I/O操作何时在存储设备上运行以及持续多长时间,对于SSD设备建议设置为noop。
      echo noop > /sys/block/${SSD_DEV_NAME}/queue/scheduler
    • Mount Parameters
      • 设置noatime参数在避免时读取文件时会更新原数据,因数据库应用不需要对访问时间做更新
      • 设置后启用了nodiratime行为,只对读取目录时对原数据更新

二、TiDB system variables

  • Concurrency
    • tidb_distsql_scan_concurrency
      • 影响范围最大的变量并发访问多个TiKV的region的并发请求的数量
      • 空闲资源较多时可以设置更高的并发来提升性能
      • 默认值为15
    • tidb_index_lookup_concurrency
      仅影响IndexLookUp operator
    • tidb_build_stats_concurrency
      控制Analyze语句并发度,如需要更快完成可以把值设置更大,但代价是影响在线业务,增大在线业务延迟
    • tidb_hash_join_concurrency
      用来控制hash join算子并发数,在系统资源充足且对hash join性能有更高要求时,可以尝试调节这个参数优化
    • tidb_index_lookup_join_concurrency
      用来控制lookup join算子,通常通过索引访问,结果相对hash join要小一些,对延迟要求较高
    • tidb_ddl_reorg_worker_cnt
      在线添加online index通过一个或多个后台worker线程将整个表的数据读出来建立所以,worker数量过多可造成在线业务延迟
  • Batch Size
    • chunk概念:在TiDB中执行查询语句时结果并不是以一条为单位处理,而是一批一批,每批的存储结构为一个chunk,设置chunk size可以影响到查询性能
    • tidb_init_chunk_size
      在查询语句第一批返回结果申请的chunk大小
    • tidb_max_chunk_size
      有后续查询结果时最大可获取的chunk大小,逐步达到最大值
    • tidb_index_join_batch_size
      影响的index join的批量处理大小
  • Limit
    • tidb_store_limit
      一个TiKV节点上并发请求的数量,设置此参数为了避免极端情况,如果限制太小无法充分利用系统资源,过大将导致TiKV压力过高
    • tidb_retry_limit
      乐观事务请求最大重试次数,如果重试次数过大会加剧冲突,过小会造成事务执行成功率下降
  • Backoff
    backoff是指请求遇到可以重试错误时,在重试前的等待时间,过大会增加延迟,过小会造成很多无谓的重试
    • tidb_backoff_weight
      设置一个factor,默认值是2,在网络环境较差的情况下适当增加该变量值会有所缓解
    • tidb_backoff_lock_fast
      用来设置读请求遇到锁的backoff时间

三、 TiDB configuration

  • Performance
    • max-proc
      用来控制TiDB使用的CPU核数,用于单台混用或部署多个TiDBServer
    • token-limit
      用来控制可以执行请求的session数量,避免链接过多造成TiDB压力
  • force-priority
    用来控制TiDB进程所有请求的优先级
  • committer-concurrency
    用来控制一个事务在commit阶段的并发度

四、TiKV Client

  • grpc-connection-count
    控制TiDB和TiKV的连接数量
  • Prepared Plan Cache
    • enabled
      开启此参数,相同类型语句可以直接使用相同的执行计划,当数据或查询条件变化时执行计划可能不是最优
    • capacity
      开启此参数,限制cache语句数量

学习过程中遇到的问题或延伸思考:

  • 问题 1:
  • 问题 2:
  • 延伸思考 1:
  • 延伸思考 2:

学习过程中参考的其他资料

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。