来自社区,回归社区。非常感谢各位 TiDBer 在之前 【TiDBer 唠嗑茶话会丨征集 TiDB 数据库性能优化大师,你是如何优化 TiDB 数据库性能的呐?】( https://asktug.com/t/topic/1005563 )里提供的各种性能优化方法。这篇帖子收集整理了大家推荐的各个方面的 TiDB 数据库性能优化方法,欢迎各位 TiDBer 持续补充更新~
方法 1
贡献者:@kongdom
开启 Raid 卡缓存,使机械硬盘的 I/O 性能直线提升。
MegaCli64 -LDInfo -Lall -aALL #查看
MegaCli64 -LDSetProp -WB -Lall -aAll #有电池启用缓存
MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL #没有电池启用缓存
MegaCli64 -LDSetProp NOCachedBadBBU -Lall -aALL #没有电池关闭缓存
注意:必须保证 Raid 卡的电池正常,否则意外断电会导致数据丢失
方法 2
贡献者:@tomxu
方法 3
贡献者:@ShawnYan
dstat 查看当前硬件资源状态
方法 4
贡献者:@TiDBer_ 小小
硬件优化:对硬件进行优化,升级硬件、调整硬件参数、调整系统参数、优化系统配置。
方法 1
贡献者:@tidb 菜鸟一只
一、
二、
如果以上都做了,性能还达不到要求,那么【参数层面优化】
三、
再看主机资源
四、
以上方法都用过了,发现性能还是达不到:
评估当前集群的资源利用率,不足直接向老板申请扩容
方法 2
贡献者:@裤衩儿飞上天
方法 1
贡献者:@coderv
可以通过分片、路由等技术来避免大量的热点数据,从而提高系统的可扩展性和可用性。在编写 SQL 语句时,应该尽量减少全表扫描,使用合适的索引来提高查询性能。比如可以使用覆盖索引、前缀索引、联合索引等技术来减少索引占用空间、提高查询效率。
方法 2
贡献者:@tomxu
方法 3
贡献者:@凌云 Cloud
方法 4
贡献者:@TiDBer_ 小小
对数据库查询语句进行优化,包括选择合适的索引、使用合适的查询语句、调整查询参数。
方法 5
贡献者:@Soysauce520
方法 6
贡献者:@SoloX
通过分析业务需求和 SQL 执行计划,使用合适的索引、避免全表扫描、调整 SQL 语句等方式来提高查询性能。
方法 1
贡献者:@tomxu
方法 2
贡献者:@SoloX
定期收集统计信息并更新,使用多列统计信息以优化复杂查询的执行计划。
方法 1
贡献者:@Jellybean
如何通过应用程序的调整和优化来提高数据库性能?包括缓存、分表、批量操作等优化方法
1.程序里面 select 语句必须指定要选择的列,不允许 select * 用法,做好上线和测试工作 2.对于批量 insert 场景,必须开启批量提交,客户端和服务端参数都好调整 3.对于批量 update 和 delete 场景,提前和业务沟通,尽量减少此类批量操作,转而通过 replace 扥方式或业务优化调整 4.对于有大量数据存储和有时限的表,我们也不建议分表,而且使用分区表,对过期的数据直接通过高效的删分区方式完成,而不是低效的批量 delete 方式 5.对于高频访问的只有几千行的小型表,设置为缓存表,可以将每秒过万的 select 延迟从 5ms 下降到 1ms 左右 6.对于有大量中间计算结果需要复用的应用,我们使用内存临时表实现
方法 2
贡献者:@tomxu
方法 3
贡献者:@SoloX
利用缓存技术减少对数据库的访问,采用分表策略解决单表过大的问题,使用批量操作减少数据库交互次数。
贡献者:@tomxu
方法 1
贡献者:@TiCQ
【硬优化】硬件优化一般不可主导,每个业务都尽最大建议给“能力之内”的配置!
【软优化】读写优化 90%在 SQL 层面,使用常规 SQL 优化方法进行相关优化处理;再配合数据库系统优化参数进行设置调优。
方法 2
贡献者:@老田牛
关键在于确定性能问题的具体位置。例如,对于慢 SQL 的问题,需要确定是单次执行慢还是大量类似的语句导致整体操作系统变慢。如果确定是单个 SQL 慢,就需要检查执行计划是否合理,是 I/O 还是 CPU 造成的慢,是缺少索引还是统计信息的问题。对于 I/O 问题,需要了解如何收集系统的 I/O 数据,确定是单个磁盘 I/O 慢还是整个系统 I/O 慢,是否有硬件报警。
方法 3
贡献者:@张雨齐 0720
不同问题有不同的优化手段。比如, 慢 SQL 那就优化 SQL,系统参数设置不当就调整参数,其实应该要具体问题具体分析。不过大部分第一件时间是捞资源使用情况和慢 SQL。
方法 4
贡献者:@db_user
初始配置先从 analyze 收集的时间段、慢 SQL、不合适的表结构方面优化,如果在这些方面都已经做到最佳状态,但性能仍然不理想,那么就需要考虑硬件瓶颈的可能性。
方法 5
贡献者:@xfworld
把 TiDB 提供的 Dashboard 用好,就能解决很多 T op 级别的问题;
然后在通过 Ggrafana 检测和排查一些重要的指标,可以从更深度的计算、网络、资源调度方面做优化。
方法 6
贡献者:@半瓶醋仙
方法 7
贡献者:@bert
原则上, 性能优化也是按需按目标执行,执行 pdca 的过程。分为硬件和软件优化,有如下建议:
方法 8
贡献者:@清风明月
1.版本信息 select tidb_version(); 2.查看数据库 show databases; 3.创建数据库 create database tidb; 4.进入数据库 user tidb; 5.查看表 show tables; 6.链接查询 show processlist; 7.开启角色 set role all; 8.查看角色 select current_role(); 9.查看授权 show grants
✨感谢大家贡献的数据库性能优化小技巧~
记得点赞收藏,可以随时在你的个人收藏夹里查看到~
未来我们将继续发布更多来自社区的精品内容,希望能为大家提供更多有价值的信息和经验。如果您有任何感兴趣的话题,可以在下方留言,我们会整理相关的资料与大家分享哦!