1.本发明涉及binlog更新语句分析技术领域,具体是指一种基于binlog分析无效更新语句的统计分析方法。
背景技术:
2.随着现代it系统越来越复杂,其所管理的数据量也越来越多,数据更新也越来越频繁。过多的更新量在数据库层面会产生越来越多的更新日志,如binlog,对更新日志的维护和管理,将消耗越来越多的人力物力。同时,在数据库主从结构的模式下,在数据库io能力一定的情况下,会发生数据同步延迟,影响写入与读出的及时性,进而影响到系统的可用性,并且对于it开发人员,如果仅是从翻阅代码的角度去分析发生原因,会花费大量人力。
3.由此可见,现有的无效更新语句的统计分析方法存在无法对无效更新语句进行判定统计的问题,导致数据库更新量过大,致使在更新日志的维护和管理上消耗大量的人力物力,严重的影响了系统数据库管理的效率和稳定性。
技术实现要素:
4.本发明的目的在于解决上述问题,提供一种可对binlog更新语句中的无效更新语句进行准确判定统计的基于binlog分析无效更新语句的统计分析方法。
5.本发明的目的通过下述技术方案实现:
6.一种基于binlog分析无效更新语句的统计分析方法,包括以下步骤:
7.步骤s1:读取系统数据库中的binlog,将binlog解析成纯文本的sql文件f。
8.步骤s2:将sql文件f按照sql语句切分成若干个小文件,并建立若干个所述小文件的文件集合。
9.步骤s3:读取文件集合中各小文件中的更新语句字符串,获取到字符串中的数据库表名称。
10.步骤s4:比较更新语句字符串中实际发生了值更新的字段,并记录下更新的字段集合。
11.步骤s5:分别判定更新的字段集合中的每个字段的更新对业务是否有意义,其中,更新的字段集合中的每个字段均为否时,该条更新语句的字符串对业务无意义,为无效更新;更新的字段集合中的其中一个字段为是时,该条更新语句的字符串对业务有意义,为有效更新。
12.步骤s6:对步骤5中得到的有效更新和无效更新进行统计,并根据统计结果,得到最终的无效更新语句数量。
13.进一步的,所述步骤s2中的切分成的若干个小文件标注为:
14.f1,f2,f3
……
fn,其中,每个小文件有且只有一条更新sql语句;n和更新语句的条数相等,且n>1。
15.所述步骤s2中的若干个所述小文件的文件集合为fset。
16.其中,fset=f1+f2+f3
……
fn。
17.所述步骤s4中,发生了值更新的字段标注为:c1,c2,
……
cy,根据binglog产生逻辑,每条更新sql语句中实际有值的更新的字段数大于或等于1,且y>1。
18.所述步骤s4中,更新的字段集合标注为qx,且qx=c1、c2
……
cy的任一组合。
19.再进一步的,所述步骤s5中,分别判定更新的字段集合中的每个字段c对更新对业务是否有意义。
20.更进一步的,所述步骤s6中,统计数据库表名以及对应的更新字段集合的出现次数的方法如下:
21.(1)对数据库表名中每个字段单独更新是否有效,并分别标注有效值,其中,单独更新有效的有效值为1,单独更新无效的有效值为0。
22.(2)根据单独更新字段标注的有效值计算出每个更新的字段集合值,其中,更新的字段集合值为:更新字段有效值之和。
23.(3)根据得到的每组字段集合的值判定每组字段集合是否为无效更新语句,其中,更新的字段集合值等于0,为无效更新语句,更新的字段集合值大于1,为有效更新语句。
24.(4)统计每个更新的字段集合出现的次数,便得到最终的无效更新语句数量。
25.本发明与现有技术相比,具有以下优点及有益效果:
26.本发明通过对数据库binlog日志文件分析,将binlog按照sql语句切分成若干个小文件,对每个小文件的更新语句字符串进行采集,并通过对更新语句字符串的更新的字段的单独和组合是否为有效或无效更新语句的判定和统计,便可准确的得到binlog中的无效更新语句的数量,从而本发明很好的解决了现有的无效更新语句的统计分析方法存在无法对无效更新语句进行判定统计的问题。
具体实施方式
27.下面结合实施例对本发明作进一步的详细说明,但本发明的实施方式不限于此。
28.实施例
29.本发明的一种基于binlog分析无效更新语句的统计分析方法,包括以下步骤:
30.步骤s1:读取系统数据库中的binlog,将binlog解析成纯文本的sql文件f。
31.步骤s2:将sql文件f按照sql语句切分成若干个小文件,并建立若干个所述小文件的文件集合。其中,切分成的若干个小文件标注为:f1,f2,f3
……
fn,同时,每个小文件有且只有一条更新sql语句,n和更新语句的条数相等,且n>1。文件集合为fset,其中,fset=f1+f2+f3
……
fn。
32.步骤s3:读取文件集合中各小文件中的更新语句字符串,获取到字符串中的数据库表名称。在实际的实施中,将文件集合中的各更新语句字符串标注为sx,数据库表名称标注为tx,且x与n的数值相同。
33.步骤s4:比较更新语句字符串中实际发生了值更新的字段,并记录下更新的字段集合。其中,发生了值更新的字段标注为:c1,c2,
……
cy,根据binglog产生逻辑,每条更新sql语句中实际有值的更新的字段数大于或等于1,且y>1。
34.其中,更新的字段集合标注为qx,且qx=c1、c2
……
cy的任一组合。
35.步骤s5:分别判定更新的字段集合中的每个字段的更新对业务是否有意义,其中,
更新的字段集合中的每个字段均为否时,该条更新语句的字符串对业务无意义,为无效更新;更新的字段集合中的其中一个字段为是时,该条更新语句的字符串对业务有意义,为有效更新。具体实施时,分别判定更新的字段集合中的每个字段c对更新对业务是否有意义。
36.步骤s6:对步骤5中得到的有效更新和无效更新进行统计,并根据统计结果,得到最终的无效更新语句数量。其中,统计数据库表名以及对应的更新字段集合的出现次数的方法如下:
37.(1)对数据库表名中每个字段单独更新是否有效,并分别标注有效值,其中,单独更新有效的有效值为1,单独更新无效的有效值为0;
38.(2)根据单独更新字段标注的有效值计算出每个更新的字段集合值,其中,更新的字段集合值为:更新字段有效值之和;
39.(3)根据得到的每组字段集合的值判定每组字段集合是否为无效更新语句,其中,更新的字段集合值等于0,为无效更新语句,更新的字段集合值大于1,为有效更新语句;
40.(4)统计每个更新的字段集合出现的次数,便得到最终的无效更新语句数量。
41.本发明通过对数据库binlog日志文件分析,将binlog按照sql语句切分成若干个小文件,对每个小文件的更新语句字符串进行采集,并通过对更新语句字符串的更新的字段的单独和组合是否为有效或无效更新语句的判定和统计,便可准确的得到binlog中的无效更新语句的数量,从而本发明很好的解决了现有的无效更新语句的统计分析方法存在无法对无效更新语句进行判定统计的问题。
42.如上所述,便可很好的实现本发明。