CN110427329A - 一种数据库sql性能数据的采集方法及系统 - Google Patents

一种数据库sql性能数据的采集方法及系统 Download PDF

Info

Publication number
CN110427329A
CN110427329A CN201910744708.0A CN201910744708A CN110427329A CN 110427329 A CN110427329 A CN 110427329A CN 201910744708 A CN201910744708 A CN 201910744708A CN 110427329 A CN110427329 A CN 110427329A
Authority
CN
China
Prior art keywords
host
mysql
performance
thread
performance data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910744708.0A
Other languages
English (en)
Other versions
CN110427329B (zh
Inventor
王航威
杨奇龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Zan Technology Co Ltd
Original Assignee
Hangzhou Zan Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Zan Technology Co Ltd filed Critical Hangzhou Zan Technology Co Ltd
Priority to CN201910744708.0A priority Critical patent/CN110427329B/zh
Publication of CN110427329A publication Critical patent/CN110427329A/zh
Application granted granted Critical
Publication of CN110427329B publication Critical patent/CN110427329B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开一种数据库SQL性能数据的采集方法,包括以下步骤:分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果;基于检测结果采集主机性能数据和相应MySQL性能数据,直至检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集。本发明能够及时获取MySQL实例/主机出现性能问题时的性能数据,有效避免现有技术中运维人员登陆数据库时出现问题的现场已经不存在,导致无法解决性能抖动的问题的情况出现。

Description

一种数据库SQL性能数据的采集方法及系统
技术领域
本发明涉及数据库领域,尤其涉及一种数据库SQL性能数据的采集方法及系统。
背景技术
SQL,结构化查询语言(Structured Query Language);
MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
在大数据时代中,数据库系统的数据类型与规模在不断扩增,这给数据库管理带来了一定的挑战。现今在MySQL发生性能抖动时,往往需要工作人员登录数据库服务器或者日志平台,获取MySQL的慢查,被杀SQL日志,错误日志等信息,结合监控工具获取MySQL的历史性能数据,进行人工分析。
但MySQL性能抖动的持续时间不定,且监控工具的粒度通常是分钟级别的,从而在MySQL性能抖动的持续时间短的情况下,慢查等日志提供的信息比较有限,在收到慢查告警或者应用使用MySQL异常的时候,再登录服务器进行分析,数据库已经恢复正常,导致无法获取第一现场数据进行有效的分析。
故,需要对现有技术做进一步改进。
发明内容
本发明针对现有技术中的缺点,提供了一种数据库SQL性能数据的采集方法及系统。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种数据库SQL性能数据的采集方法,包括以下步骤:
分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果;
基于检测结果采集主机性能数据和相应MySQL性能数据,直至检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集。
作为一种可实施方式,分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果的具体步骤为:
创建主机探测线程和若干个MySQL探测线程,其中主机探测线程与主机相对应,MySQL探测线程与MySQL实例一一对应;
所述主机探测线程基于主机性能数据检测主机是否发生性能抖动,并生成相应主机检测结果;
同时每个MySQL探测线程基于MySQL性能数据检测所述MySQL实例是否发生性能抖动,并生成相应MySQL实例检测结果;
所述主机检测结果和各MySQL实例检测结果构成检测结果。
作为一种可实施方式,基于检测结果采集主机性能数据和相应MySQL性能数据的具体步骤为:
创建主机性能快照线程和若干个MySQL性能快照线程,其中主机性能快照线程与主机相对应,MySQL性能快照线程与MySQL实例一一对应;
基于主机检测结果通知主机性能快照线程采集主机性能数据,并通知所有MySQL性能快照线程采集与其相对应的MySQL性能数据;
基于MySQL实例检测结果通知主机性能快照线程采集主机性能数据,并通知相应的MySQL性能快照线程采集与其相对应的MySQL性能数据。
作为一种可实施方式,检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集具体步骤为:
基于主机检测结果通过主机探测线程检测主机是否恢复正常,当主机恢复正常时,通知主机性能快照线程和所有MySQL性能快照线程暂停采集;
基于MySQL实例检测结果通过相应MySQL探测线程检测与其相对应的MySQL实例是否恢复正常,当所述MySQL实例恢复正常时,通知主机性能快照线程和对应MySQL性能快照线程暂停采集。
作为一种可实施方式,基于检测结果采集主机性能数据和相应MySQL性能数据后还包括对性能数据分析诊断的步骤,具体步骤为:
当出现性能抖动后,根据主机性能数据和相应MySQL性能数据与规则库中预设的分析规则进行匹配,根据相匹配的分析规则获取慢查日志、kill日志和/或information_schema数据库,并结合主机性能数据和相应MySQL性能数据进行分析,输出诊断结果。
为解决上述技术问题,本发明还提出一种数据库SQL性能数据的采集系统,包括:
检测模块,用于分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果;
采集模块,用于基于检测结果采集主机性能数据和相应MySQL性能数据,直至检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集。
作为一种可实施方式,所述检测模块包括探测线程创建单元、主机检测单元和实例检测单元;
所述探测线程创建单元,用于创建主机探测线程和若干个MySQL探测线程,其中主机探测线程与主机相对应,MySQL探测线程与MySQL实例一一对应;
所述主机检测单元,用于通过所述主机探测线程基于主机性能数据检测主机是否发生性能抖动,并生成相应主机检测结果;
所述实例检测单元,用于通过每个MySQL探测线程基于MySQL性能数据检测所述MySQL实例是否发生性能抖动,并生成相应MySQL实例检测结果;
所述主机检测结果和各MySQL实例检测结果构成检测结果。
作为一种可实施方式,采集模块包括快照创建线程单元、数据采集单元和暂停单元:
所述快照线程创建单元,用于创建主机性能快照线程和若干个MySQL性能快照线程,其中主机性能快照线程与主机相对应,MySQL性能快照线程与MySQL实例一一对应;
所述数据采集单元,用于基于主机检测结果通知主机性能快照线程采集主机性能数据,并通知所有MySQL性能快照线程采集与其相对应的MySQL性能数据;还用于基于MySQL实例检测结果通知主机性能快照线程采集主机性能数据,并通知相应的MySQL性能快照线程采集与其相对应的MySQL性能数据。
作为一种可实施方式,暂停单元被配置为:
基于主机检测结果通过主机探测线程检测主机是否恢复正常,当主机恢复正常时,通知主机性能快照线程和所有MySQL性能快照线程暂停采集;
基于MySQL实例检测结果通过相应MySQL探测线程检测与其相对应的MySQL实例是否恢复正常,当所述MySQL实例恢复正常时,通知主机性能快照线程和对应MySQL性能快照线程暂停采集。
作为一种可实施方式,还包括智能诊断引擎,所述智能诊断引擎被配置为:
当出现性能抖动后,根据主机性能数据和相应MySQL性能数据与规则库中预设的分析规则进行匹配,根据相匹配的分析规则获取慢查日志、kill日志和/或information_schema数据库,并结合主机性能数据和相应MySQL性能数据进行分析,输出诊断结果。
本发明由于采用了以上技术方案,具有显著的技术效果:
1、本发明能够及时获取MySQL实例/主机出现性能问题时的性能数据,有效避免现有技术中运维人员登陆数据库时出现问题的现场已经不存在,导致无法解决性能抖动的问题的情况出现。
2、本发明分别对主机和每一个MySQL实例进行检测以及性能数据的采集,有效避免了某一探测线程/性能快照线程出现异常时,影响其他探测线程/性能快照线程正常工作的情况发生;
3、本发明能够自动对所采集的性能数据进行分析诊断,与人工分析诊断相比,能够提高对数据进行分析诊断的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种数据库SQL性能数据的采集方法的流程示意图;
图2是实施例2中一种数据库SQL性能数据的采集方法的工作原理示意图;
图3是本发明一种数据库SQL性能数据的采集系统的模块连接示意图。
图中,1是检测模块、11是探测线程创建单元、12是主机检测单元、13是实例检测单元、2是采集模块、21是快照线程创建单元、22是数据采集单元、23是暂停单元、3是智能诊断引擎。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
实施例1、一种数据库SQL性能数据的采集方法,如图1所示,包括以下步骤:
S100、分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果;
S200、基于检测结果采集主机性能数据和相应MySQL性能数据,直至检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集。
注:主机性能数据至少包括CPU数据、IO数据和网络数据,上述CPU数据至少包括CPU使用率,IO数据至少包括IO使用率。
MySQL性能数据至少包括MySQL实例的引擎状态、活跃事务列表、执行的SQL列表、锁等待信息;
本发明考虑到MySQL发生性能的原因不仅仅是出现异常SQL,还有可能是由于主机的某些指标发生了抖动,且主机发生性能抖动会影响主机上的所有MySQL实例,故本发明分别对主机和各MySQL实例进行检测,根据检测结果采集主机性能数据和相应MySQL性能数据,从而为后续进行诊断分析的工作提供完整、充足性能数据。
进一步地,所述步骤S100分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果的具体步骤如下:
S110、创建主机探测线程和若干个MySQL探测线程,其中主机探测线程与主机相对应,MySQL探测线程与MySQL实例一一对应;
主机探测线程和各MySQL探测线程均需要保持一个数据库长连接,同时保持秒级的探测频率。由于一台物理机(主机)上启动多个MySQL实例,为避免某个MySQL实例出现异常(如被悬挂无法正常工作),导致MySQL探测线程也出现异常(如被悬挂无法正常工作)无法返回的情况,故本实施例中针对每个MySQL实例都启动一个MySQL探测线程。
S111、所述主机探测线程基于主机性能数据检测主机是否发生性能抖动,并生成相应主机检测结果;
本实施例中判断主机是否发生性能抖动的方法为:
主机探测线程获取主机性能数据(秒级),通过所述主机性能数据判断当前CPU使用率连续k1秒都达到了预设的CPU使用率阈值,或IO使用率连续k1秒达到了预设的IO使用率阈值,则判定主机发生性能抖动;
相关领域的工作人员可根据实际需要对上述k1、CPU使用率阈值和IO使用率阈值进行设定,本实施例中k1取10,CPU使用率阈值和IO使用率阈值均取90%,即当前CPU使用率连续10秒都达到了90%,或IO使用率连续10秒达到了90%,则判定主机发生性能抖动。
注:不能只根据一个时间的数据判定主机发生性能抖动。
S112、同时每个MySQL探测线程基于MySQL性能数据检测所述MySQL实例是否发生性能抖动,并生成相应MySQL实例检测结果;所述主机检测结果和各MySQL实例检测结果构成检测结果。
本实施例MySQL探测线程获取对应MySQL性能数据(秒级),根据MySQL性能数据判断是否发生性能抖动,具体包括以下3个方面:
(1)、根据响应时间(SQL执行时间,简称RT)判断是否发生性能抖动:
将对应MySQL实例的响应时间与预设的响应时间阈值相比较,当响应时间超过预设的响应时间阈值时且超过k2秒时,则判定该MySQL实例发生性能抖动,相关领域的技术人员可根据实际需要自行设定k2的值,本实施例中k2取值为10。
在MySQL实例中执行探测指令(例如select*test.hearbeat limit 1)获取响应时间,正常响应时间通常在10毫秒以内,因此本实施例中预设响应时间阈值为10毫秒,由于不同的服务器,磁盘IO性能不同,响应耗时不一样,故相关领域的技术人员可根据实际需要自行设定响应时间阈值。
注,本实施中响应时间即SSD磁盘的服务器探测获得的SQL耗时,此为现有技术故不再详细介绍,当SQL耗时超过10毫秒(响应时间阈值)且持续10s(k2)时可以认为MySQL实例在某个方面发生了等待,故可判定该MySQL实例发生性能抖动;
(2)、根据参数thread_running(并发执行线程的数量)和thread_connected(当前打开的连接的数量)判断是否发生性能抖动:
在MySQL实例中执行状态分析指令(show global status),获取该MySQL实例中thread_running的值和thread_connected值,将所得thread_running与CPU的核心数相比较,同时计算thread_connected的同比增长数据(如与上一时期的thread_connected进行计算),将所得同比增长数据与预设的同比增长阈值相比较,当thread_running大于CPU的核心数并持续k3秒,或thread_connected同比增长数据超过预设的同比增长阈值时,判断MySQL实例发生性能抖动;
相关领域的技术人员可根据实际需要设置k3的值以及同比增长阈值,本实施例中k3取值为10,同比增长阈值的取值为30%。
当thread_running大于CPU的核心数且持续10s时,此时可判断数据库堵塞,故可认定对应MySQL实例发生抖动,当thread_connected同比增长数据超过30%,即可确认此时连接数暴增,此时易发生性能抖动,故本实施例中判定此时MySQL实例发生性能抖动;
(3)、根据参数Com_kill(被杀数据参数),Slow_queries(慢查数据参数)判断是否发生性能抖动:在MySQL实例中执行状态分析指令(show global status),还可获取Com_kill的值和Slow_queries的值,计算Com_kill和Slow_queries的同比增长数据,当每秒增长值超出预设的增长阈值时,则判断该MySQL实例发生性能抖动;
相关领域的技术人员可根据实际需要设置增长阈值,本实施例中增长阈值的取值为3,即,Com_kill或Slow_queries每秒增长值超出3时,则判断该MySQL实例是否发生性能抖动。
如Com_kill(或Slow_queries)的值在10秒钟内增长了40,说明了每秒钟有4个SQL被kill(或有三个慢查SQL),则判断该MySQL实例是否发生性能抖动。
注:不能只根据一个时间的数据判定MySQL实例发生性能抖动。
进一步地,所述步骤S200中基于检测结果采集主机性能数据和相应MySQL性能数据的具体步骤如下;
S210、创建主机性能快照线程和若干个MySQL性能快照线程,其中主机性能快照线程与主机相对应,MySQL性能快照线程与MySQL实例一一对应;
同步骤S110,为避免多个MySQL实例同时发生性能问题的时候,无法及时的保存当时的性能数据,故本实施例中针对每个MySQL实例都启动一个MySQL性能快照线程。
同一MySQL实例相对应的MySQL探测线程和MySQL性能快照线程之间可以通过多个方式进行同步,比如线程间的同步、队列、锁等方式,此为现有技术,故不再本说明书中进行详细描述。
S211、基于主机检测结果通知主机性能快照线程采集主机性能数据,并通知所有MySQL性能快照线程采集与其相对应的MySQL性能数据。
由于主机发生抖动会影响该主机上的所有MySQL实例,因此除了通知主机性能快照线程保存主机性能数据,还需要通知主机上的所有MySQL性能快照线程去保存相应MySQL性能数据。
即,一台主机上存在多个存活的MySQL实例,当主机发生了性能抖动,需要获取主机以及主机上所有MySQL性能数据。
S222、基于MySQL实例检测结果通知主机性能快照线程采集主机性能数据,并通知相应的MySQL性能快照线程采集与其相对应的MySQL性能数据。
由于MySQL实例发生性能问题的时候,无法确认是MySQL实例出现异常还是主机的某些指标发生了抖动,因此当MySQL实例发生了性能抖动的时候,除了要通知MySQL实例相对应的MySQL性能快照线程保存数据,还需要通知主机快照线程保存数据。
即,一台主机上存在多个存活的MySQL实例,当其中一个MySQL实例发生了性能抖动,需要获取抖动的MySQL实例和主机的性能数据。
注,本实施例中基于现有快照技术采集主机性能数据和MySQL性能数据,连续采集的主机性能数据和各MySQL性能数据保存在一个快照目录下。
进一步地,所述步骤S200中检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集的具体步骤为:
S220、基于主机检测结果通过主机探测线程检测主机是否恢复正常,当主机恢复正常时,通知主机性能快照线程和所有MySQL性能快照线程暂停采集;
注意:暂停采集只是暂停保存性能数据,不得退出,避免下次发生性能抖动的时候,对应的主机性能快照线程或MySQL性能快照线程的时候发生错误。即,仅在步骤S111中检测主机发生抖动后才检测主机是否恢复正常,本实施例中,主机探测线程检测发生性能抖动的主机是否恢复正常的方法为:
主机探测线程按照步骤S111对主机进行检测,所得主机探测队列中90%的主机探测点均正常,则判定发生性能抖动的主机恢复正常。
上述主机探测队列包括主机探测线程进行探测的连续n个主机探测点,相关技术领域的技术人员可根据实际需要自行设定n的取值,本实施例中n的取值为10;判断主机探测点是否正常的方法为,所述主机探测点对应的CPU使用率达到了预设的CPU使用率阈值,或IO使用率达到了预设的IO使用率阈值,则判定该主机探测点不正常。
S221、基于MySQL实例检测结果通过相应MySQL探测线程检测与其相对应的MySQL实例是否恢复正常,当所述MySQL实例恢复正常时,通知主机性能快照线程和对应MySQL性能快照线程暂停采集。
即,仅检测步骤S112中检测到发生性能抖动的MySQL实例是否恢复正常,本实施例中,MySQL探测线程检测发生性能抖动的MySQL实例是否恢复正常的方法为:
MySQL探测线程按照步骤S112对相应MySQL实例进行检测,所得实例探测队列中90%的实例探测点均正常,则判定发生性能抖动的MySQL实例恢复正常。
上述实例探测队列包括MySQL探测线程进行探测的连续n个实例探测点;
判断实例探测点是否正常的方法为,所述实例探测点对应的响应时间、thread_running、thread_connected的同比增长数据、Com_kill的同比增长数据或Slow_queries的同比增长数据超过预设的阈值(详见步骤S112),则判定该实例探测点不正常。
更进一步地,分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果之前还包括对性能数据进行预收集的步骤,具体步骤为:
主机性能快照线程预收集主机性能数据,获得主机性能数据队列,MySQL性能快照线程预收集相应MySQL性能数据,获得对应的实例性能数据队列,各队列中均包括连续采集的m组性能数据(主机或MySQL性能数据),相关技术领域的技术人员可根据实际需要自行设定m的取值,本实施例中m取值为3。
由于主机性能快照线程和MySQL性能快照线程预收集对应性能数据的工作原理相同,故下述仅对主机性能快照线程预收集主机性能数据进行详细介绍:
当主机工作正常时,新预收集的性能数据将覆盖在先预采集的性能数据,
当主机检测到发生性能抖动时,此时主机性能快照线程收到通知进行对主机性能数据的采集,此时将预收集获得的主机性能数据队列中3组性能数据进行保存,该预收集的性能数据和后续主机性能快照线程采集的性能数据共同保存在同一快照目录(连续的快照构成一个快照目录)下。
更进一步的,当主机/MySQL实例恢复正常时,主机探测线程/MySQL探测线程延迟t秒通知主机性能快照线程和对应MySQL性能快照线程暂停采集;
相关技术领域的技术人员可根据实际需要自行设定t的取值,本实施例中t取值为10,即主机/MySQL实例恢复正常后还采集10s的性能数据;
综上,本实施例除了保存检测发生性能抖动时的性能数据,还保存发生性能抖动前3秒的性能数据和性能抖动结束后10s的性能数据,从而使主机性能快照线程和对应MySQL性能快照线程获取充足的性能数据,便于后续工作人员进行诊断分析,有效避免无法获取有效的性能数据进行诊断分析的情况发生;
实施例2、基于实施例1中步骤S200基于检测结果采集主机性能数据和相应MySQL性能数据后增加对性能数据分析诊断的步骤,其余等同于实施例1,对性能数据分析诊断的具体步骤为:
当出现性能抖动后,根据主机性能数据和相应MySQL性能数据与规则库中预设的分析规则进行匹配,根据相匹配的分析规则获取慢查日志、kill日志和/或information_schema数据库,并结合主机性能数据和相应MySQL性能数据进行分析,输出诊断结果。
所述预设的分析规则为工作人员分析MySQL性能问题时,根据实际需要自行设定的规则,相关技术领域的技术人员可根据实际情况自行设定分析规则,本实施例中采用以下分析规则:
1、当根据MySQL实例对应的性能数据获知Slow_queries状态值和Com_kill状态值突增(同比增长数据超过预设值),且thread running升高,但该MySQL实例中各SQL语句均不应当为慢查(扫描的行数少于预设值),同时发现在这段时间内有DDL的SQL语句产生,且出现慢查的SQL语句的时间均在DDL的SQL语句执行时间区间内,则判断该DDL的SQL语句为TOP SQL(即引起MySQL发生抖动的SQL语句);
2、当根据MySQL实例对应的性能数据获知thread running超过数据库主机的CPUcore时候,获取information_schema库中innodb_trx表的SQL语句,即可获得MySQL Innodb引擎当时正在处理的SQL语句,分析各SQL语句的执行计划是否存在大量扫描或者无索引等异常情况,从而确认TOP SQL。
3、当根据MySQL实例对应的性能数据获知Slow_queries状态值发生了突增(同比增长数据超过预设值),则检查慢查日志,确认对应时间区间的慢查SQL语句,根据慢查日志里面的Rows_examined,进行排序,Rows_examined越大,一般情况下执行越慢,从而确认TOPSQL。
4、当根据MySQL实例对应的性能数据获知Com_kill状态值发生了突增(同比增长数据超过预设值),则获取对应时间区间的kill日志。根据kill日志里面的各SQL语句数量获取被杀次数最多的SQL语句,分析该SQL语句执行计划,判断其对应的性能数据的SQLstate是否存在lock wait;如果无,则判断主机的网络数据、IO数据、CPU数据是否有波动。
上述分析规则为工作人员对MySQL实例性能问题进行分析的经验总结,通过预设分析规则能够加快对性能问题的分析速度,将人工进行问题分析的时间(几分钟甚至几小时)的降低到几秒钟。
更进一步地,获取用户输入的自定义分析规则,将所述自定义分析规则保存在规则库中;即,在实际使用中,工作人员可根据实际需要添加分析规则。
图2中Host表示主机、MySQL1和MySQL2为在该主机上存活两个MySQL实例,如图2所示,当主机探测线程检测主机发生性能抖动时,通知主机性能快照进行主机性能数据的采集;
每个MySQL实例均与有与其相对应的MySQL探测线程和MySQL性能快照线程;当MySQL探测线程检测对应MySQL实例发生性能抖动时,通知相应的MySQL性能快照线程进行MySQL性能数据的采集;
当主机或任一MySQL实例发生性能抖动时,根据所保存的主机性能数据和MySQL性能数据与规则库中各分析规则进行匹配,从而实现针对不同性能问题的场景进行匹配,如当根据MySQL实例对应的性能数据获知Slow_queries状态值突增(同比增长数据超过预设值),则与上述第3条分析规则匹配成功,此时根据第3条分析规则获取慢查日志,对慢查日志(Rows_examined)与MySQL性能数据(时间区间)进行分析,从而确认产生抖动的SQL语句。
本实施例中可根据预设的时间间隔对所保存的主机性能数据和MySQL性能数据按照分析规则进行诊断分析(抖动可能未结束),还可在抖动结束后对所保存的主机性能数据和MySQL性能数据按照分析规则进行诊断分析。
实施例3、一种数据库SQL性能数据的采集系统,包括检测模块1和采集模块2;
检测模块1,用于分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果;
采集模块2,用于基于检测结果采集主机性能数据和MySQLMySQL性能数据,直至检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集。
进一步地,所述检测模块1包括探测线程创建单元11、主机检测单元12和实例检测单元13;
所述探测线程创建单元11,用于创建主机探测线程和若干个MySQL探测线程,其中主机探测线程与主机相对应,MySQL探测线程与MySQL实例一一对应;
所述主机检测单元12,用于通过所述主机探测线程基于主机性能数据检测主机是否发生性能抖动,并生成相应主机检测结果;
所述实例检测单元13,用于通过每个MySQL探测线程基于MySQL性能数据检测所述MySQL实例是否发生性能抖动,并生成相应MySQL实例检测结果;
所述主机检测结果和各MySQL实例检测结果构成检测结果。
进一步地,采集模块2包括快照创建线程单元21、数据采集单元22和暂停单元23:
所述快照线程创建单元21,用于创建主机性能快照线程和若干个MySQL性能快照线程,其中主机性能快照线程与主机相对应,MySQL性能快照线程与MySQL实例一一对应;
所述数据采集单元22,用于基于主机检测结果通知主机性能快照线程采集主机性能数据,并通知所有MySQL性能快照线程采集与其相对应的MySQL性能数据;还用于基于MySQL实例检测结果通知主机性能快照线程采集主机性能数据,并通知相应的MySQL性能快照线程采集与其相对应的MySQL性能数据。
所述暂停单元23被配置为:
基于主机检测结果通过主机探测线程检测主机是否恢复正常,当主机恢复正常时,通知主机性能快照线程和所有MySQL性能快照线程暂停采集;
基于MySQL实例检测结果通过相应MySQL探测线程检测与其相对应的MySQL实例是否恢复正常,当所述MySQL实例恢复正常时,通知主机性能快照线程和对应MySQL性能快照线程暂停采集。
本实施例为与方法实施例1相对应的装置实施例而言,由于其与方法实施例1基本相似,所以描述的比较简单,相关之处参见方法实施例1的部分说明即可。
实施例4、如图3所示,在实施例3的基础上增加智能诊断引擎3,其余均等同于实施例3;
所述智能诊断引擎3被配置为:
当出现性能抖动后,根据主机性能数据和相应MySQL性能数据与规则库中预设的分析规则进行匹配,根据相匹配的分析规则获取慢查日志、kill日志和/或information_schema数据库,并结合主机性能数据和相应MySQL性能数据进行分析,输出诊断结果。
本实施例为与方法实施例2相对应的装置实施例而言,由于其与方法实施例2基本相似,所以描述的比较简单,相关之处参见方法实施例2的部分说明即可。
本实施例中可以通过监控(open falcon)进行HTTP回调或者探测脚本HTTP回调智能诊断引擎执行分析,通过监控进行HTTP回调(根据预设的回调间隔进行回调,抖动可能未结束)与探测脚本HTTP回调(抖动结束后进行回调)的方法属于现有技术,故不在本说明书中进行详细介绍。
注:回调有5分钟的强制间隔,从而避免频繁输出诊断结果。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是:
说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

Claims (10)

1.一种数据库SQL性能数据的采集方法,其特征在于,包括以下步骤:
分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果;
基于检测结果采集主机性能数据和相应MySQL性能数据,直至检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集。
2.根据权利要求1所述的一种数据库SQL性能数据的采集方法,其特征在于,分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果的具体步骤为:
创建主机探测线程和若干个MySQL探测线程,其中主机探测线程与主机相对应,MySQL探测线程与MySQL实例一一对应;
所述主机探测线程基于主机性能数据检测主机是否发生性能抖动,并生成相应主机检测结果;
同时每个MySQL探测线程基于MySQL性能数据检测所述MySQL实例是否发生性能抖动,并生成相应MySQL实例检测结果;
所述主机检测结果和各MySQL实例检测结果构成检测结果。
3.根据权利要求2所述的一种数据库SQL性能数据的采集方法,其特征在于,基于检测结果采集主机性能数据和相应MySQL性能数据的具体步骤为:
创建主机性能快照线程和若干个MySQL性能快照线程,其中主机性能快照线程与主机相对应,MySQL性能快照线程与MySQL实例一一对应;
基于主机检测结果通知主机性能快照线程采集主机性能数据,并通知所有MySQL性能快照线程采集与其相对应的MySQL性能数据;
基于MySQL实例检测结果通知主机性能快照线程采集主机性能数据,并通知相应的MySQL性能快照线程采集与其相对应的MySQL性能数据。
4.根据权利要求3所述的一种数据库SQL性能数据的采集方法,其特征在于,检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集具体步骤为:
基于主机检测结果通过主机探测线程检测主机是否恢复正常,当主机恢复正常时,通知主机性能快照线程和所有MySQL性能快照线程暂停采集;
基于MySQL实例检测结果通过相应MySQL探测线程检测与其相对应的MySQL实例是否恢复正常,当所述MySQL实例恢复正常时,通知主机性能快照线程和对应MySQL性能快照线程暂停采集。
5.根据权利要求1至4任一所述的一种数据库SQL性能数据的采集方法,其特征在于,基于检测结果采集主机性能数据和相应MySQL性能数据后还包括对性能数据分析诊断的步骤,具体步骤为:
当出现性能抖动后,根据主机性能数据和相应MySQL性能数据与规则库中预设的分析规则进行匹配,根据相匹配的分析规则获取慢查日志、kill日志和/或information_schema数据库,并结合主机性能数据和相应MySQL性能数据进行分析,输出诊断结果。
6.一种数据库SQL性能数据的采集系统,其特征在于,包括:
检测模块,用于分别检测MySQL实例和主机是否发生性能抖动,当MySQL实例和/或主机发生性能抖动时,生成检测结果;
采集模块,用于基于检测结果采集主机性能数据和相应MySQL性能数据,直至检测发生抖动的MySQL实例和/或主机恢复正常,此时暂停对主机和相应MySQL的性能数据的采集。
7.根据权利要求6所述的一种数据库SQL性能数据的采集系统,其特征在于,所述检测模块包括探测线程创建单元、主机检测单元和实例检测单元;
所述探测线程创建单元,用于创建主机探测线程和若干个MySQL探测线程,其中主机探测线程与主机相对应,MySQL探测线程与MySQL实例一一对应;
所述主机检测单元,用于通过所述主机探测线程基于主机性能数据检测主机是否发生性能抖动,并生成相应主机检测结果;
所述实例检测单元,用于通过每个MySQL探测线程基于MySQL性能数据检测所述MySQL实例是否发生性能抖动,并生成相应MySQL实例检测结果;
所述主机检测结果和各MySQL实例检测结果构成检测结果。
8.根据权利要求7所述的一种数据库SQL性能数据的采集系统,其特征在于,采集模块包括快照创建线程单元、数据采集单元和暂停单元:
所述快照线程创建单元,用于创建主机性能快照线程和若干个MySQL性能快照线程,其中主机性能快照线程与主机相对应,MySQL性能快照线程与MySQL实例一一对应;
所述数据采集单元,用于基于主机检测结果通知主机性能快照线程采集主机性能数据,并通知所有MySQL性能快照线程采集与其相对应的MySQL性能数据;还用于基于MySQL实例检测结果通知主机性能快照线程采集主机性能数据,并通知相应的MySQL性能快照线程采集与其相对应的MySQL性能数据。
9.根据权利要求8所述的一种数据库SQL性能数据的采集系统,其特征在于,暂停单元被配置为:
基于主机检测结果通过主机探测线程检测主机是否恢复正常,当主机恢复正常时,通知主机性能快照线程和所有MySQL性能快照线程暂停采集;
基于MySQL实例检测结果通过相应MySQL探测线程检测与其相对应的MySQL实例是否恢复正常,当所述MySQL实例恢复正常时,通知主机性能快照线程和对应MySQL性能快照线程暂停采集。
10.根据权利要求6至9任一所述的一种数据库SQL性能数据的采集系统,其特征在于,还包括智能诊断引擎,所述智能诊断引擎被配置为:
当出现性能抖动后,根据主机性能数据和相应MySQL性能数据与规则库中预设的分析规则进行匹配,根据相匹配的分析规则获取慢查日志、kill日志和/或information_schema数据库,并结合主机性能数据和相应MySQL性能数据进行分析,输出诊断结果。
CN201910744708.0A 2019-08-13 2019-08-13 一种数据库sql性能数据的采集方法及系统 Active CN110427329B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910744708.0A CN110427329B (zh) 2019-08-13 2019-08-13 一种数据库sql性能数据的采集方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910744708.0A CN110427329B (zh) 2019-08-13 2019-08-13 一种数据库sql性能数据的采集方法及系统

Publications (2)

Publication Number Publication Date
CN110427329A true CN110427329A (zh) 2019-11-08
CN110427329B CN110427329B (zh) 2023-04-25

Family

ID=68415968

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910744708.0A Active CN110427329B (zh) 2019-08-13 2019-08-13 一种数据库sql性能数据的采集方法及系统

Country Status (1)

Country Link
CN (1) CN110427329B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767269A (zh) * 2020-06-24 2020-10-13 苏州紫焰网络科技有限公司 数据库实例的健康检测方法、装置、设备及存储介质

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005164313A (ja) * 2003-12-01 2005-06-23 Nippon Telegr & Teleph Corp <Ntt> 合成騒音シミュレーション方法及び合成騒音シミュレーションシステム
CN103377077A (zh) * 2012-04-12 2013-10-30 奈飞公司 通过诱发延时来评估分布式计算服务的弹性的方法和系统
CN103729361A (zh) * 2012-10-12 2014-04-16 百度在线网络技术(北京)有限公司 一种数据库性能测试方法及装置
US20160170861A1 (en) * 2014-12-16 2016-06-16 Xinyu Xingbang Information Industry Co., Ltd Method and a Device Thereof for Achieving the Monitoring Option Script of MySQL Database
CN106126658A (zh) * 2016-06-28 2016-11-16 电子科技大学 一种基于虚拟存储器快照的数据库检查点构建方法
CN106407830A (zh) * 2015-07-29 2017-02-15 阿里巴巴集团控股有限公司 一种基于云的数据库的检测方法和装置
CN106571977A (zh) * 2016-10-24 2017-04-19 腾讯科技(深圳)有限公司 数据传输方法和装置
CN106649033A (zh) * 2016-11-08 2017-05-10 努比亚技术有限公司 web系统健康状态检查方法及装置
CN107203637A (zh) * 2017-06-08 2017-09-26 恒生电子股份有限公司 一种数据分析方法及系统
CN107529639A (zh) * 2017-08-10 2018-01-02 清远博云软件有限公司 一种软件可信性检测分析方法
CN107943647A (zh) * 2017-11-21 2018-04-20 北京小度互娱科技有限公司 一种可靠的分布式日志收集方法和系统
CN108965022A (zh) * 2018-07-31 2018-12-07 上海胜战科技发展有限公司 一种网络异常数据监测系统及监测方法
CN108984374A (zh) * 2017-06-01 2018-12-11 腾讯科技(深圳)有限公司 一种数据库性能的测试方法和系统

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005164313A (ja) * 2003-12-01 2005-06-23 Nippon Telegr & Teleph Corp <Ntt> 合成騒音シミュレーション方法及び合成騒音シミュレーションシステム
CN103377077A (zh) * 2012-04-12 2013-10-30 奈飞公司 通过诱发延时来评估分布式计算服务的弹性的方法和系统
CN103729361A (zh) * 2012-10-12 2014-04-16 百度在线网络技术(北京)有限公司 一种数据库性能测试方法及装置
US20160170861A1 (en) * 2014-12-16 2016-06-16 Xinyu Xingbang Information Industry Co., Ltd Method and a Device Thereof for Achieving the Monitoring Option Script of MySQL Database
CN106407830A (zh) * 2015-07-29 2017-02-15 阿里巴巴集团控股有限公司 一种基于云的数据库的检测方法和装置
CN106126658A (zh) * 2016-06-28 2016-11-16 电子科技大学 一种基于虚拟存储器快照的数据库检查点构建方法
CN106571977A (zh) * 2016-10-24 2017-04-19 腾讯科技(深圳)有限公司 数据传输方法和装置
CN106649033A (zh) * 2016-11-08 2017-05-10 努比亚技术有限公司 web系统健康状态检查方法及装置
CN108984374A (zh) * 2017-06-01 2018-12-11 腾讯科技(深圳)有限公司 一种数据库性能的测试方法和系统
CN107203637A (zh) * 2017-06-08 2017-09-26 恒生电子股份有限公司 一种数据分析方法及系统
CN107529639A (zh) * 2017-08-10 2018-01-02 清远博云软件有限公司 一种软件可信性检测分析方法
CN107943647A (zh) * 2017-11-21 2018-04-20 北京小度互娱科技有限公司 一种可靠的分布式日志收集方法和系统
CN108965022A (zh) * 2018-07-31 2018-12-07 上海胜战科技发展有限公司 一种网络异常数据监测系统及监测方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767269A (zh) * 2020-06-24 2020-10-13 苏州紫焰网络科技有限公司 数据库实例的健康检测方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110427329B (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
EP3734520A1 (en) Fault analysis and prediction using empirical architecture analytics
US6973415B1 (en) System and method for monitoring and modeling system performance
Lou et al. Software analytics for incident management of online services: An experience report
Pham et al. Failure diagnosis for distributed systems using targeted fault injection
US6792393B1 (en) System and method for diagnosing computer system operational behavior
Bronevetsky et al. Automatic fault characterization via abnormality-enhanced classification
Jiang et al. Efficient fault detection and diagnosis in complex software systems with information-theoretic monitoring
CN106445755B (zh) 一种整机柜服务器自动化测试方法
CN114189430A (zh) 立体化日志全链路监控系统、方法、介质及设备
US10860465B2 (en) Automatically rerunning test executions
US7197428B1 (en) Method for performance monitoring and modeling
EP3591485B1 (en) Method and device for monitoring for equipment failure
US10528456B2 (en) Determining idle testing periods
US20180300229A1 (en) Root cause analysis of non-deterministic tests
Almeida et al. Benchmarking the resilience of self-adaptive software systems: perspectives and challenges
Cámara et al. Empirical resilience evaluation of an architecture-based self-adaptive software system
CN109783260A (zh) 智能it全流程运维方法、装置、设备及可读存储介质
CN103150250A (zh) 应用程序性能检测系统和应用程序性能检测方法
CN113010392A (zh) 大数据平台的测试方法、装置、设备、存储介质和系统
CN105677572A (zh) 基于自组织映射模型云软件性能异常错误诊断方法与系统
CN109634803A (zh) 一种上报设备异常的方法和装置
CN116962471A (zh) 一种基于物联网的医疗设备管理系统
CN112115029A (zh) 性能测试方法及装置、计算机设备及计算机可读存储介质
Munawar et al. Adaptive monitoring in enterprise software systems
CN110427329A (zh) 一种数据库sql性能数据的采集方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method and system for collecting database SQL performance data

Effective date of registration: 20231229

Granted publication date: 20230425

Pledgee: Hangzhou United Rural Commercial Bank Co.,Ltd. Dongyue sub branch

Pledgor: HANGZHOU YOUZAN TECHNOLOGY CO.,LTD.

Registration number: Y2023980074694

PE01 Entry into force of the registration of the contract for pledge of patent right