TiDB学习笔记(七)-数据库系统优化

一、操作系统参数

CPU

dynamic frequency scaling 五种功耗模式 推荐performance 时刻保持高速运转

cpupower frequency-set --governor performance

NUMA Binding  为CPU绑定内存,提升效率

Memory

Transparent Huge Page(THP)关闭大页内存

Virtual Memory Parameters   脏数据写入内存

        dirty_backgroud_ratio=10%

        dirty_ratio=20%

Disk

I/O scheduler  推荐NOOP,先来先执行

Mount Parameters

        关闭noatime和nodiatime记录时间的操作

二、TiDB Server 关键性能参数与优化

Performance

max-proc        控制tidb server的CPU核数

token-limit        同时执行请求的session的数量

force-priority        控制tidb server的优先级,OLTP业务设置为NO_PRIORITY,OLAP业务、全表扫描自动设置为LOW_PRIORITY

commiter-concurrency        控制一个事务commit阶段的最大的并发量。

Tikv Client

grpc-connection-count         设置tidb和每个tikv之间的gRPC连接数量

Prepared Plan Cache       

        enabled        减少执行计划造成的开销

        capacity        限制cache缓存的条数,避免占用过多的内存

System Variables

Concurrency        设置并发度

Batch Size        

        tidb_init_chunk_size/tidb_max_chunk_size        分别代表一个chunk初始包含的行数,一个chunk包含的最大行数。申请过大的chunk内存会造成性能损失

        tidb_index_join_batch_size        OLAP业务可设置较大些

Limit

        tidb_store_limit        同时发往一个tikv节点的请求数量

        tidb_retry_limit        控制乐观事务的重试次数

Backoff

        tidb_backoff_weight        调整最大重试时间

        tidb_backoff_lock_fast        读请求遇到锁的backoff时间

三、PD 关键性能参数与优化

 调度流程

信息收集(store、region)->生成调度->执行调度

控制operator产生速度的参数

 消费限速store limit,限制单个store的消费速度

pd-ctl -u ip:port store limit <id> <value>

存储空间阈值参数 high-space-ratio默认0.6,low-space-ratio默认0.8。指的是tikv的空间

 扩容后balance region调度速度慢

store节点故障后补副本的速度慢

region merge速度慢 

 

四、TiKV 关键性能参数与优化

tikv数据写入流程        scheduler pool->raftstore pool->rocksdb raft log ->apply pool ->rocksdb kv

                                                                                   ->raft log传输到其他的tikv节点

写入瓶颈分析

 

 读取瓶颈分析

 

 write stall,瞬时写入的数据过多时,rocksdb对写入进行减速。

write stall问题的参数优化:

  • 超过rocksdb的max-write-buffer-number。(max-write-buffer-number如果设置很大,一旦rocksdb宕机,内存中的数据很多,需要较长的恢复时间)
  • level0-file-num-compaction-trigger(会触发文件往下一层进行压缩),level-slowdown-writers-trigger(达到此值时会触发write stall),level0-stop-writes-trigger(停止写入)
  • compression-per-level 提升文件的压缩效率

slow query 

线程池调优

  • gPRC线程池  负责网络IO,反序列化,  server.grpc-concurrency 默认为4,CPU<=8时为2
  • Scheduler线程池   将复杂事务转换为简单的key-value读写   storage.scheduler-worker-pool-size  CPU>=16时为8,CPU<16时为4
  • Raftstore线程池   所有的写请求都会在raftstore通过fsync方式写入到rocksdb,raftstore.store-pool-size默认为2
  • UnifyReadPool   负责所有读请求   readpool.unified.max-thread-count为CPU数的80%
  • RocksDB线程池   RocksDB进行 Compact 和 Flush 任务

内存参数调优

Follower Read    session变量tidb_replica_read设置为follower或leader-and-follower,设置为leader-and-follower时,读请求会在leader和follower之间负载均衡

五、TiDB 集群常用监控指标

内存参数调优

  • tidb_mem_quota_query单条SQL使用内存限制通过session变量控制,前提是配置了oom-action = "log"
  • mem-quota-query每个查询默认的内存限制参数
  • server-memory-quota          tidb-server内存限制
  • memory-usage-alarm-ratio 使用内存达到总内存的比例时报警

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值