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的优先级,全表扫描自动设置为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学习笔记(七)-数据库系统优化相关推荐
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...
天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...
- 家族关系查询系统程序设计算法思路_【学习笔记】数据库基础 - 查询优化
目录 什么是数据库查询优化? 影响查询优化的因素 优化策略概述 查询优化的总体思路 语义优化 -- 内容等价性 语法优化(逻辑层优化)---语法等价性 执行优化(物理层优化) 查询优化在DBMS中的位 ...
- 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码
吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...
- websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...
- ROS学习笔记七:使用rqt_console和roslaunch
ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- window的dos命令学习笔记 七
文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...
- ESP32学习笔记(七) 复位和时钟
ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...
最新文章
- android ScrollView/NestedScrollView 添加可拖动的滚动条
- 全球及中国智能照明行业应用状况及竞争格局展望报告2021-2027年
- boost::hana模块使用 Hana 实现基本维度分析的示例
- GDCM:从VR查找标签的测试程序
- AT3913-XOR Tree【状压dp】
- 【数据结构】单链表基本操作(C++实现)
- Tomcat安装之前为什么要安装JDK
- FFmpeg 内容介绍 音视频解码和播放
- Android-EditText属性大全
- 何通过ArcCatalog本地发布地图服务
- 网络七层协议的通俗理解
- python--单例模式
- 几点思考-人生哲学,生活方式---ShinePans
- C语言作业然后是几点,用C语言解“然后是几点”问题
- Vivo Android9.0 精简内置应用列表
- docker(五):更新容器映射端口
- QT入门学习之软件程序开发初体验
- NanoPi M4开发opencv图像识别aruco码全过程(超详细)(二:测试补充)
- floodFill详解
- 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果
热门文章
- websphere liberty
- fanuc机器人四边形编程_FANUC机器人编程及应用
- 终极指南 | 干了这篇收心文,从入门到精通手把手教你写出最牛白皮书!
- 用php建站_九个常用的php建站系统
- 用计算机计算数学公式,Formula Calculator公式计算器
- Windows timeout命令
- 如何打开电脑端口——以开启mysql数据库3306端口为例
- 用c语言编写人机结合的加法,综合集成研讨厅中人机结合的研讨流程研究.pdf
- hiveserver2 HA
- 刨根系列 之 Unity3D UGUI 背后的工作原理