• 0
  • 0
分享
  • 浅谈TDSQL数据库的性能调优——软件测试圈
  • 曼倩诙谐 2023-08-02 11:38:46 字数 1933 阅读 1862 收藏 0

  一、TDSQL概述

  TDSQL是腾讯研发的一款兼容MySQL协议的国产分布式数据库,适用于大并发、高性能、大容量的 OLTP 类场景。TDSQL分为集中式和分布式版本,分布式版可支持分布式事务,但性能不如单机事务,性能会有一定的损耗,如需使用,需要进行实际测试结果来决定是否使用。

  二、TDSQL性能监控分析工具

  1. 赤兔平台

  赤兔平台中通过DB监控、实例监控和SQL Engine监控可以查看查看数据库及网关的监控指标,通过日志管理查看慢查询和SQL Engine日志,同时还可以通过性能分析报告(实例管理-》“点击实例 ID 进入”-》性能分析)查看系统状态、表空间分布、冗余索引、死锁诊断、锁等待诊断、慢查询分析、DB状态检查等信息。

  (1)慢查询

  慢查询诊断通过TDSQL的监控库汇总set中主备慢查询的分析结果,并对每个摘要对应的样例SQL生成的索引建议作为该类SQL的建议。点击实例管理-实例ID-日志查询-慢查询,查看DB是否有慢查询SQL。如果有慢查询,可以点击SQL分析可以查看修改建议和SQL的查询计划。

  (2)SQL Engine慢查询

  SQL Engine慢查询与慢查询相比,增加了sql在SQL Engine的执行时间。如没有慢查询,可以查看是否有SQL Engine慢查询,如不存在慢查询,仅存在porxy慢查询,可考虑对porxy服务器扩容。

  (3)死锁或锁等待

  通过实例管理-实例ID-性能分析-实时诊断,可查看数据库是否存死锁。通过实例管理-实例ID-性能分析-实时诊断,可查看数据库是否存在锁等待。

  (4)冗余索引

  冗余索引意味着update/insert/delete需要更新不必要的索引,带来潜在的性能影响。通过实例管理-实例ID-性能分析-实时诊断,可查看数据是否存在冗余索引。

  (5)会话检查

  通过性能分析-会话检查可以查看数据库的所有会话。也可通过异常会话菜单可以查看实时会话和异常会话。

  2. APM监控工具

  通过APM工具和全链路监控工具中交易的堆栈信息可以查看sql语句的执行时长,进而发现执行慢的SQL语句。

  3.DBbrain

  DBbrain为腾讯新开发的TDSQL性能分析工具,可以实现从业务SQL到DB SQL双向追踪,还可以对死锁、等待行锁等多个锁冲突场景进行异常诊断,还可以对慢查询进行分析并给出优化建议。

  三、性能问题排查思路

  1.检查运行状态

  登录赤兔,通过DB监控和SET管理均可以查看TDSQL各节点的运行情况。此外,也可以登录TDSQL服务器,通过PS -ef|grep tdsql_run查看TDSQL进程是否存在。

  2. 检查配置参数

  (1)查看数据库参数

  登录赤兔,通过实例管理-数据库管理-数据库参数,可以参看数据库配置参数,重点关注最大连接数的设置。

  (2)查看数据库连接串参数

  登录POD的控制台,在/soft/tomcat/conf目录下查看context.xml

  文件,可以看到数据库连接串配置的参数。连接串参数可以重点关注serverTimezone、rewriteBatchedStatements、netTimeoutForStreamingResults、allowMultiQueries等参数。

  3.借助监控工具查看异常

  通过赤兔及DBbrain可以查看慢查询、SQL Engine慢查询、死锁等监控项,并查看SQL优化建议,此外,通过APM和全链路监控工具也可以查看响应时间慢的SQL语句。

  4.检查Engine日志

  TDSQL SQL Engine日志文件分为接口日志文件(interf_instance_xxx)、SQL日志文件(SQL_instance_xxxx)和慢查询日志文件(slow_SQL_instance_xxxx)。接口日志文件接口日志主要存储了由客户端传输给服务器的原始SQL信息,包括客户端,后端服务器、新建连接的数量、新建连接的花费的时间、查询得到的结果集总量、操作影响的行数等;SQL日志文件记录了在set中具体执行的SQL信息;慢查询日志慢查询日志主要存储了ddl语句及响应时间超过1s的dml语句。

  5.关注数据分布情况

  对于批量程序,应关注各节点的处理的数据量差异,尽可能使各节点的数据量保持均匀,避免因各节点数据量差异影响批量程序的执行时长。此外,批量提交的size可以在性能测试中进行调整,从而找对批量执行效率最高的size设置值。


作者:赵俊杰    

来源:http://www.51testing.com/html/92/n-7796692.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一 不同测试角色年终总结重点及案例  刚刚结束了一波战斗,费脑又费精力,周末在家写了一天年终总结,在写的过程中,颇有感触。又到了一年的尾声,作为搬砖人来说总结写的好不好关乎个人切身利益,从个人发展角度来看可总结经验教训、寻找工作规律,培养、锻炼自己的思维方法提升个人工作能力;从小组及公司层面来看一份具有参考价值的报告可增强团队凝聚力,为企业提供决策依据。年底一般企业都会针对项目写总结,一般流程是组员呈交给组长,组长递交给测试经理所以每个层级写各自的总结,会有不同的侧重点,下面分别来聊聊测试工程师、测试组长以及测试经理年终总结的关注点在什么地方以及采用什么样的方法及策略使年终总结有实际意义且...
            0 0 1019
            分享
          •   一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作,我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。环境配置如此麻烦,换一台机器,就要重来一次,费时费力。很多人就在想,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一摸一样的复制过来。开发人员利用docker可以消除协作编码时“在我电脑上是正常的呀”的问题。  Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案  之前在服务器配置一个应用的运行环境,要安装各种软件,比如,jav...
            0 0 530
            分享
          •   还在上大学的时候就听说开发和测试不能和平相处,因为一个是提bug的,一个是改bug的,但是实际情况真的是这样吗?答案是:并不是这样。  开发和测试的关系取决于个人解决问题的方式。下面来说一下,怎样才能让开发和测试和平共处。  注意沟通方式  沟通方式是真的非常重要的。  作为测试,跟开发的沟通非常频繁,那么在沟通的过程中,沟通方式的不同可能会产生不同的结果。  比如说测试去找开发沟通一个问题,应该先说一下需求是什么样的,自己是怎样理解的,现在的功能是怎样的,并且委婉的说一下是不是在开发过程中漏掉了这一点,或者是不是我们理解有偏差,这样把问题摆出来之后,开发人员也会自己反思是不是自己的问题,...
            0 0 1078
            分享
          •   日本国会已经完成了一项与欧盟非常相似的举措,即制定一项法律,禁止大型科技公司阻挡第三方应用程序商店的出现。该法案于 5 月在日本众议院获得通过,现在又于周三在参议院获得通过。根据现行程序,该法案无需经天皇签署即可成为法律。  该法案旨在促进竞争,降低应用程序价格。据报道,日本政府认为苹果和Google是双头垄断企业,它们向开发者收取高额费用,然后再转嫁给用户。  拥有应用商店的大型科技公司也将禁止公司优先使用自己的服务,Google可能受此打击最大。  违法者最初将被处以最高为违法具体服务国内收入 20% 的罚款。如果被罚主体放任这种行为持续下去,罚款可能会增加到 30%。  日本政府的公...
            0 0 385
            分享
          •   前言  我们编写自动化的测试用例,通常会编写在单元测试框架中。python的单元测试有自带的unittest和第三方的pytest,今天主要介绍下我们在python中如何通过unittest编写自动化测试用例。  unittest介绍  unittest属于python自带的单元测试框架,类似与java的junit。unittest支持编写测试自动化用例,多个用例中共享一个前置和后置内容,有多种执行测试用例的方法,支持生成独立的测试报告内容。  官方文档:https://docs.python.org/2/library/unittest.html  unittest常用方法  无论是什么...
            12 12 2265
            分享
      • 51testing软件测试圈微信