写点什么

关于 TiDB 性能优化的一些思考

  • 2022 年 7 月 11 日
  • 本文字数:1493 字

    阅读完需:约 5 分钟

作者: 代晓磊 _Mars 原文来源:https://tidb.net/blog/148f0422


本文首发于微信公众号:晓磊聊 DB 欢迎大家搜索关注

为什么定性能优化这个主题?

写在 TUG 企业行将走进 58 同城之前,作为 TUG 的华北区 leader,在定这次企业行主题时,就想到 TiDB 性能优化这个大方向,因为在 asktug 网站的主题提问或者分享方案以及线下的交流中,听到不少关于 TIDB 性能优化的案例,一般都是基于一些“惨痛”的踩坑事故,分析问题现场,查看基于官方文档、Asktug 论坛或者跟 Pingcap 技术专家交流后,定位问题,提供性能优化的方案,最后解决问题。这些“性能优化”案例,其实背后都是 TiDB 运维人员一次次的事故 Postmortem(PS: 都是心酸泪啊)。


所以本次企业行邀请了 58 同城、知乎、理想汽车、PingCAP 的技术专家将分享 TiDB 的性能优化实践。

我对优化的理解

其实作为数据库都离不开“优化”这个主题,优化的细分主题和主题的延伸都比较广阔,可以从 2 个大方面来拆分:基于层次的优化;基于场景的优化。

基于层次的优化

为什么叫基于层次的优化,因为从我看来,优化是一层层递进的,可以从:硬件、软件、SQL 优化这 3 个层次来看。



  1. 硬件优化

  2. 主要是硬件选型和硬件参数优化


  • CPU:选配什么 CPU,调整什么参数使得 CPU 发挥最大功效

  • 网卡:千兆 / 万兆,之前使用 MySQL 就是千兆网卡,并且使用不到 50%,你现在上线就用万兆?涉及网络方面的参数调优。

  • 硬盘:SAS 盘能玩 TIDB 么?sata SSD/Pcie-ssd 如何配置,硬盘参数:IO 调度,大页等

  • 内存:如何配置 TiDB 的内存使用,关闭共享内存等等


  1. 软件

  2. 主要从操作系统和 tidb 这个分布式数据库本身来调优

  3. OS:

  4. 操作系统的版本,其实主要是 Linux 的内核调优

  5. 操作系统的参数?上面已经提到了。


TiDB 集群参数


  • tidb:tidb 的参数有调整过么?

  • pd:PD 的调度等参数

  • tikv:tikv 压缩,region size 等参数?

  • 动态调整,作用域 (show variables)(edit config) 等等。


  1. SQL 优化:


  • 从“根基”就要打好基础:涉及到建表,字段选择等

  • 索引使用:索引的使用是数据库更古不变的优化项

  • SQL 改写:SQL 的写法不同也会影响到性能,比如子查询改写

  • 到解决方案时:sql binding

  • 统计信息问题:TiDB 使用统计信息来决定索引的选择,大家也经常遇到统计信息不准导致的索引选择错误问题。

基于场景的优化

因为各个公司业务不同,需要优化的点也不同,所以可以细分成不同的场景,之前在 asktug 也写了不少优化的文章,比如在写冲入较高的场景下如何提升写入性能,还有不少读热点定位和解决的文章,所以从大的场景来看,可分为读热点优化,写热点优化,特定场景调优,可以看下面的思维导图:



  1. 读优化:


  • 读热点:这个读热点问题在 asktug 是很普遍的问题

  • SQL 执行计划稳定性问题

  • Tiflash 下推:有可能 SQL 中使用到 tiflash 没有下推的函数

  • SQL 延迟高:各种原因的“综合体”

  • TiDB server OOM:大 SQL 导致内存使用过载,OOM kill


  1. 写入优化:


  • 写热点:这个写热点问题在 asktug 是很普遍的问题

  • 悲观 / 乐观事务:之前我写过一篇文章

  • 主键使用问题:自增主键 or auto random

  • 没有主键:sharding row bits

  • 分布式事务:2PC or 异步提交 (1PC)


  1. 基于特定场景的调优:


  • DDL 执行过慢:一般新增字段比较快,添加索引很慢,如何加速?

  • KV 负载不均衡:PD 调度参数了解下?

  • OLAP SQL 执行问题:JOIN+group by,MPP 了解下?

  • ETL 场景:涉及批量的读写慢问题

  • 限制大查询:kill SQL or 设定 statement quota

重点

最后其实想表达的是:上面只是优化的一些思考,主要是抛出涉及“优化”这个主题可能涉及的问题和方向,不同人有不同的理解和解决方案,可以通过 9 月 11 号的 58 企业行多多交流,对于我的理解还请轻怕。下面是这次 TUG-58 企业行的邀请,大家积极报名参与下:



发布于: 刚刚阅读数: 3
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
关于 TiDB 性能优化的一些思考_性能调优_TiDB 社区干货传送门_InfoQ写作社区