一、操作系统参数

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的优先级,全表扫描自动设置为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包含多行数据

tidb_index_join_batch_size

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
  • 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 使用内存达到总内存的比例时报警

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

  1. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...

    天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...

  3. 家族关系查询系统程序设计算法思路_【学习笔记】数据库基础 - 查询优化

    目录 什么是数据库查询优化? 影响查询优化的因素 优化策略概述 查询优化的总体思路 语义优化 -- 内容等价性 语法优化(逻辑层优化)---语法等价性 执行优化(物理层优化) 查询优化在DBMS中的位 ...

  4. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  5. websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...

    Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...

  6. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

  7. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练

    [K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...

  8. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  9. window的dos命令学习笔记 七

    文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...

  10. ESP32学习笔记(七) 复位和时钟

    ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...

最新文章

  1. android ScrollView/NestedScrollView 添加可拖动的滚动条
  2. 全球及中国智能照明行业应用状况及竞争格局展望报告2021-2027年
  3. boost::hana模块使用 Hana 实现基本维度分析的示例
  4. GDCM:从VR查找标签的测试程序
  5. AT3913-XOR Tree【状压dp】
  6. 【数据结构】单链表基本操作(C++实现)
  7. Tomcat安装之前为什么要安装JDK
  8. FFmpeg 内容介绍 音视频解码和播放
  9. Android-EditText属性大全
  10. 何通过ArcCatalog本地发布地图服务
  11. 网络七层协议的通俗理解
  12. python--单例模式
  13. 几点思考-人生哲学,生活方式---ShinePans
  14. C语言作业然后是几点,用C语言解“然后是几点”问题
  15. Vivo Android9.0 精简内置应用列表
  16. docker(五):更新容器映射端口
  17. QT入门学习之软件程序开发初体验
  18. NanoPi M4开发opencv图像识别aruco码全过程(超详细)(二:测试补充)
  19. floodFill详解
  20. 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果

热门文章

  1. websphere liberty
  2. fanuc机器人四边形编程_FANUC机器人编程及应用
  3. 终极指南 | 干了这篇收心文,从入门到精通手把手教你写出最牛白皮书!
  4. 用php建站_九个常用的php建站系统
  5. 用计算机计算数学公式,Formula Calculator公式计算器
  6. Windows timeout命令
  7. 如何打开电脑端口——以开启mysql数据库3306端口为例
  8. 用c语言编写人机结合的加法,综合集成研讨厅中人机结合的研讨流程研究.pdf
  9. hiveserver2 HA
  10. 刨根系列 之 Unity3D UGUI 背后的工作原理