一、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设置值。
作者:赵俊杰