CN108197306B - Sql语句处理方法、装置、计算机设备和存储介质 - Google Patents

Sql语句处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN108197306B
CN108197306B CN201810091240.5A CN201810091240A CN108197306B CN 108197306 B CN108197306 B CN 108197306B CN 201810091240 A CN201810091240 A CN 201810091240A CN 108197306 B CN108197306 B CN 108197306B
Authority
CN
China
Prior art keywords
performance
sql statement
sql
version environment
low
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.)
Active
Application number
CN201810091240.5A
Other languages
English (en)
Other versions
CN108197306A (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201810091240.5A priority Critical patent/CN108197306B/zh
Priority to PCT/CN2018/088974 priority patent/WO2019148713A1/zh
Publication of CN108197306A publication Critical patent/CN108197306A/zh
Application granted granted Critical
Publication of CN108197306B publication Critical patent/CN108197306B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种SQL语句处理方法、系统、计算机设备和存储介质。所述方法包括:获取每个初始SQL语句的数据库子参数;根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比;提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于核心SQL语句集合中的初始SQL语句;对低性能SQL语句进行性能提升处理。采用本方法能够节约了分析定位在新版本环境中性能降低的SQL语句的时间,从而缩短关系数据库系统版本升级周期。

Description

SQL语句处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据库技术领域,特别是涉及一种SQL语句处理方法、装置、计算机设备和存储介质。
背景技术
SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。不同版本关系数据库系统之间的优化器之间会有所差异。优化器的目的是按照一定的判断原则来得到它认为的目标SQL语句在当前的情形下的最高效的执行路径,也就是为了得到目标SQL语句的最佳执行计划。因此相同的SQL语句在不同版本的数据库环境中的执行计划会有所差异,且执行计划会改变SQL语句的性能。通常会采用SPA(SQL Performance Analyze,SQL性能分析)技术对SQL语句进行分析,得到SQL语句分别在关系数据库系统的新版本环境和旧版本环境中的执行计划及性能。对在新版本环境中性能降低的SQL语句进行优化后才能进行关系数据库系统版本升级,以保证关系数据库系统版本升级后SQL语句的性能不降低。
然而,当SQL语句量十分庞大时,传统的SQL语句处理方式需要耗费大量的时间分析定位在新版本环境中性能降低的SQL语句,从而导致关系数据库系统版本升级周期较长。
发明内容
基于此,有必要针对上述技术问题,提供一种能够缩短关系数据库系统版本升级周期的SQL语句处理方法、装置、计算机设备和存储介质。
一种SQL语句处理方法,所述方法包括:获取每个初始SQL语句的数据库子参数;根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比;提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;将所述核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;所述低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于所述核心SQL语句集合中的初始SQL语句;对所述低性能SQL语句进行性能提升处理。
在其中一个实施例中,所述数据库子参数为多个;在所述根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比之前,还包括:获取所有初始SQL语句的数据库总参数;所述根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比,包括:计算每个初始SQL语句的数据库子参数在相应的数据库总参数中的单性能占比;获取与数据库子参数对应的预设参考权重;根据多个数据库子参数对应的单性能占比和相应的预设参考权重进行计算,得到每个初始SQL语句的性能消耗占比。
在其中一个实施例中,所述将所述核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句,包括:获取旧版本环境中的核心SQL语句集合;将旧版本环境中的核心SQL语句集合发送至新版本环境中;在新版本环境中创建并执行旧版本环境的SQL性能分析任务和新版本环境的SQL性能分析任务,分别得到第一分析参数和第二分析参数;所述第一分析参数是通过执行所述旧版本环境的SQL性能分析任务得到的分析参数;所述第二分析参数是通过执行所述新版本环境的SQL性能分析任务得到的分析参数。比较第一分析参数和第二分析参数,得到低性能SQL语句。
在其中一个实施例中,所述将旧版本环境中的SQL语句集合发送至新版本环境中,包括:在所述旧版本环境中创建中转表;将所述旧版本环境中的核心 SQL语句集合导入所述中转表;将存储有核心SQL语句集合的中转表发送至新版本环境中进行解压,得到所述新版本环境中的核心SQL语句集合。
在其中一个实施例中,所述对所述低性能SQL语句进行性能提升处理,包括:对所述低性能SQL语句进行筛除处理;对进行筛除处理后的低性能SQL语句按照预设条数进行拆分处理,形成低性能SQL语句子集合;对低性能SQL语句子集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL 语句子集合中的低性能SQL语句;对得到的低性能SQL语句循环进行筛除处理、拆分处理和性能分析,直至低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能。
在其中一个实施例中,所述方法还包括:获取增量SQL语句;当检测到所述增量SQL语句预置了SQL执行计划管理SPM,且所述增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同时,则去除所述增量 SQL语句的SPM;判断未预置SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同;若否,则对所述增量SQL语句循环进行性能提升处理,直至增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
在其中一个实施例中,所述数据库子参数包括逻辑读、执行次数和消耗时间。
一种SQL语句处理装置,所述装置包括:数据库子参数获取模块,用于获取每个初始SQL语句的数据库子参数;性能消耗占比计算模块,用于根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比;核心SQL语句集合形成模块,用于提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;低性能SQL语句提取模块,用于将所述核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;所述低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于所述核心SQL语句集合中的初始SQL语句;低性能SQL语句处理模块,对所述低性能SQL语句进行性能提升处理。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述各个实施例中所述的 SQL语句处理方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述各个实施例中所述的SQL语句处理方法的步骤。
上述SQL语句处理方法、装置、计算机设备和存储介质,通过对每个初始 SQL语句的数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比。从而能够根据性能消耗占比从所有的初始SQL语句中,筛选出对所有SQL语句的执行效率有较大影响的核心SQL语句集合。通过将核心SQL语句集合置于旧版本环境和新版本环境中进行性能分析,再次筛选出在新版本环境中的性能低于在旧版本环境的性能的处于核心SQL语句集合中的低性能SQL语句。使得只需要对少量的低性能SQL语句进行性能提升处理即可保证关系数据库系统版本升级后SQL语句的性能不降低,节约了分析定位在新版本环境中性能降低的 SQL语句的时间,从而缩短关系数据库系统版本升级周期。
附图说明
图1为一个实施例中SQL语句处理方法的应用场景图;
图2为一个实施例中SQL语句处理方法的流程示意图;
图3为另一个实施例中SQL语句处理方法的流程示意图;
图4为一个实施例中SQL语句处理装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语的限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一分析参数称为第二分析参数,且类似地,可将第二分析参数称为第一分析参数。第一分析参数和第二分析参数两者都是分析参数,但其不是同一分析参数。
本申请提供的SQL语句处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。比如说服务器104 可接收终端102发送的初始SQL语句,并对接收的初始SQL语句进行SQL语句处理,还可以将处理后的SQL语句发送至终端102。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种SQL语句处理方法,以该方法应用于图1中的服务器102为例进行说明,包括以下步骤:
步骤202,获取每个初始SQL语句的数据库子参数。
初始SQL语句是指是指在升级到新版本关系数据库系统之前,需要进行 SQL语句处理的SQL语句。其中,对初始SQL语句进行SQL语句处理是为了保证关系数据库系统版本升级后SQL语句的性能不降低。关系数据库系统是指用于数据管理及数据与字段之间关联关系管理的数据库系统。关系数据库系统包括但不限于Oracle数据库系统、SQL Server数据库系统及MySQL数据库系统等。其中,每种关系数据库可具有多种版本。比如Oracle数据库系统具有多种版本,包括Oracle 10g、Oracle 11g及Oracle 12c等。数据库子参数是指一个初始SQL语句在关系数据库系统中运行之后得到的参数。数据库子参数包括逻辑读、执行次数和消耗时间等其中一种或多种的组合。其中,逻辑读(buffer_gets) 是指初始SQL语句在一次运行过程中从数据缓存读取的页数,执行次数 (execution_count)是指初始SQL语句在一次运行过程中所被执行的次数,消耗时间(cpu_time)是指初始SQL语句在一次运行过程中消耗CPU(Central Processing Unit,中央处理器)的时间。
在一个实施例中,在Oracle数据库系统中,可通过查询V$SQLAREA视图或V$SQL视图中获取每个初始SQL语句的数据库子参数。V$SQLAREA视图和V$SQL视图都是Oracle数据库系统中用于监控SQL语句资源消耗的系统视图。V$SQL视图可记录每个SQL语句的数据库子参数,V$SQLAREA视图还可对SQL语句进行聚合,统计多个SQL语句的数据库子参数之和。比如说, V$SQLAREA视图中,可根据sql_text进行统计,比如说对前1000条初始SQL 语句的消耗时间进行统计。
步骤204,根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比。
性能消耗占比是指一个SQL语句针对所有SQL语句在一种或多种性能方面消耗的综合占比。其中,可通过逻辑读、执行次数和消耗时间等其中一种或多种在数据库子参数的组合来评估SQL语句的性能。比如说,查询相同的数据,初始SQL语句的消耗时间越久,则说明该初始SQL的执行效率越低,可认为该初始SQL的性能较低。同样的,查询相同的数据,初始SQL语句的执行次数越多,则说明该初始SQL的执行效率越低,可认为该初始SQL的性能较低。
在一个实施例中,数据库子参数为多个;在根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比之前,还包括:获取所有初始SQL语句的数据库总参数;根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比,包括:计算每个初始SQL语句的数据库子参数在相应的数据库总参数中的单性能占比;获取与数据库子参数对应的预设参考权重;根据多个数据库子参数对应的单性能占比和相应的预设参考权重进行计算,得到每个初始 SQL语句的性能消耗占比。
数据库总参数是指所有初始SQL语句在关系数据库系统中运行之后得到的总参数。单性能占比是指单项数据库子参数在相应数据库总参数中的占比。比如说,每个初始SQL语句逻辑读r在总逻辑读R的单性能占比
Figure BDA0001563762480000061
执行次数c 在总执行次数C的单性能占比
Figure BDA0001563762480000062
或消耗时间t在总消耗时间T的占比单性能
Figure BDA0001563762480000063
可针对逻辑读、执行次数、消耗时间三个数据库子参数分别预设参考权重w1、 w2、w3,则可根据公式
Figure BDA0001563762480000064
计算得到每个初始SQL语句的性能消耗占比P。
在一个实施例中,计算出每个初始SQL语句的多个单性能占比之后,还可将多个单性能占比中的最大值作为初始SQL语句的性能消耗占比,或者可将多个单性能占比的平均值作为初始SQL语句的性能消耗占比,但不限于此。
步骤206,提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL 语句集合。
核心SQL语句集合是指由性能消耗占比大于预设阈值的多个初始SQL语句所形成的集合。比如说,初始SQL语句的性能消耗占比大于99%时,说明该初始SQL语句对一次运行过程影响很大,则可将性能消耗占比大于预设阈值的多个初始SQL语句从所有的初始SQL语句中提取出来,形成核心SQL语句集合进行进一步处理。
在一个实施例中,还可以根据初始SQL语句的性能消耗占比对初始SQL语句进行排序,可以提取排序后性能消耗占比大于预设阈值的初始SQL语句形成核心SQL语句集合,还可以提取排序后前预设百分比的初始SQL语句形成核心 SQL语句集合。
步骤208,将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句。
旧版本环境是指关系数据库系统版本升级前的关系数据库系统环境。新版本环境是指关系数据库系统版本升级后的关系数据库系统环境。比如说,Oracle 数据库系统需要从Oracle 10g版本升级至Oracle 12c版本,则Oracle 10g版本的 Oracle数据库系统环境为旧版本环境,Oracle 12c版本的Oracle数据库系统环境为新版本环境。将核心SQL语句集合中的初始SQL语句分别置于旧版本环境和新版本环境中运行,通过性能分析可得到低性能SQL语句。其中,低性能SQL 语句为在新版本环境的性能低于在旧版本环境的性能的、处于核心SQL语句集合中的初始SQL语句。
在一个实施例中,可从逻辑读、执行次数和消耗时间等其中一种或多种维度来对核心SQL语句集合中的初始SQL语句进行性能分析。比如说,比较核心 SQL语句集合中的初始SQL语句分别在旧版本环境和新版本环境中的逻辑读,将在新版本环境中的逻辑读大于在旧版本环境中的逻辑读所对应的初始SQL语句作为低性能SQL语句。
步骤210,对低性能SQL语句进行性能提升处理。
性能提升处理是指对低性能SQL语句的性能进行优化的处理。可以对低性能SQL语句本身进行优化。比如说,对低性能SQL语句的操作符进行优化,包括在业务密集的低性能SQL语句中以EXISTS操作符代替IN操作符,将IS NULL操作符或IS NOT NULL操作符用其它相同功能的操作运算代替等。再比如,调整WHERE之后的条件顺序,使得减少运算量。还可以对相同功能但不同写法的低性能SQL语句进行过滤,减少重复运算。
在一个实施例中,当检测到低性能SQL语句的数量超过预设数量时,还可以对低性能SQL语句做进一步筛选。比如说,当检测到低性能SQL语句大于十万个时,可根据每个低性能SQL语句的数据库子参数计算每个低性能SQL语句在所有低性能SQL语句的性能消耗占比,筛选出性能消耗占比大于预设阈值的低性能SQL语句。重复上述筛选过程,直至低性能SQL语句的数量小于预设数量时。对筛选后小于预设数量的低性能SQL语句进行性能提升处理。
上述SQL语句处理方法中,通过对每个初始SQL语句的数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比。从而能够根据性能消耗占比从所有的初始SQL语句中,筛选出对所有SQL语句的执行效率有较大影响的核心 SQL语句集合。通过将核心SQL语句集合置于旧版本环境和新版本环境中进行性能分析,再次筛选出在新版本环境中的性能低于在旧版本环境的性能的处于核心SQL语句集合中的低性能SQL语句。使得只需要对少量的低性能SQL语句进行性能提升处理即可保证关系数据库系统版本升级后SQL语句的性能不降低,节约了分析定位在新版本环境中性能降低的SQL语句的时间,从而缩短关系数据库系统版本升级周期。
在一个实施例中,将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句,包括:获取旧版本环境中的核心SQL 语句集合;将旧版本环境中的核心SQL语句集合发送至新版本环境中;在新版本环境中创建并执行旧版本环境的SQL性能分析任务和新版本环境的SQL性能分析任务,分别得到第一分析参数和第二分析参数;第一分析参数是通过执行旧版本环境的SQL性能分析任务得到的分析参数;第二分析参数是通过执行新版本环境的SQL性能分析任务得到的分析参数。比较第一分析参数和第二分析参数,得到低性能SQL语句。
SQL性能分析任务是指系统数据库中用于分析SQL语句的性能的任务。第一分析参数和第二分析参数是指反映SQL语句的性能的参数,包括但不限于逻辑读、执行次数、消耗时间等数据库子参数,还可以是与执行计划相关的参数等。
举例来说,当旧版本环境中没有SQL性能分析功能而新版本环境中有SQL 性能分析功能时,则需要将旧版本环境中的核心SQL语句集合发送至新版本环境中进行性能分析。比如在Oracle数据库系统需要从Oracle 10g版本升级至 Oracle 12c版本时,由于SPA(SQLPerformance Analyze,SQL性能分析)是 Oracle 11g版本之后的Oracle数据库系统才有的新功能。所以在Oracle数据库系统版本升级之前,需要将获取Oracle 10g版本数据库系统中的核心SQL语句集合,将Oracle 10g版本数据库系统中的核心SQL语句集合发送至Oracle12c 版本数据库系统中进行测试。在Oracle 12c版本数据库系统中创建并执行Oracle 10g版本数据库系统环境下的第一SPA任务和Oracle 12c版本数据库系统环境下的第二SPA任务,分别得到第一分析参数和第二分析参数。第一分析参数是通过执行Oracle 10g版本数据库系统环境下的第一SPA任务得到的分析参数;第二分析参数是通过执行Oracle 12c版本数据库系统环境下的第二SPA任务得到的分析参数。比较第一分析参数和第二分析参数,得到低性能SQL语句。
在一个实施例中,将旧版本环境中的SQL语句集合发送至新版本环境中,包括:在旧版本环境中创建中转表;将旧版本环境中的核心SQL语句集合导入中转表;将存储有核心SQL语句集合的中转表发送至新版本环境中进行解压,得到新版本环境中的核心SQL语句集合。
中转表是指将一个关系数据库系统中的数据复制或转移到另一个关系数据库系统中的表。在系统数据库版本升级前,初始SQL语句是处于旧版本环境中的,因此核心SQL语句集合也是出于旧版本环境中。需要在旧版本环境中创建中转表,并将旧版本环境中的核心SQL语句集合中的初始SQL语句导入中转表;将存储有核心SQL语句集合的中转表发送至新版本环境中进行解压,在新版本环境中得到的核心SQL语句集合。还可对中转表预设版本号,使得后续能够快速查找到每一次性能分析过程中所对应的核心SQL语句集合。通过将旧版本环境中的核心SQL语句集合通过中转表转移到新版本环境中,还能够提高性能分析对象的精准性。
在一个实施例中,对于关系数据库系统版本准备升级至关系数据库系统版本升级的过程中,还可存在新增的SQL语句。如图3所示,SQL语句处理方法还包括对新增的SQL语句的处理步骤,具体包括以下步骤:
步骤302,获取增量SQL语句。
增量SQL语句是指在关系数据库系统版本准备升级至关系数据库系统版本升级的过程中新增的SQL语句。同样的,可对增量SQL语句进行筛除处理,即去除重复的增量SQL语句、执行报错的增量SQL语句和没有抓到绑定变量值但包含绑定变量的增量SQL语句等。对执行成功及筛除后的增量SQL语句做进一步处理。
步骤304,检测增量SQL语句是否预置了SQL执行计划管理SPM。
SQL执行计划管理SPM(SQL plan Management,Oracle执行计划管理)是指Oracle数据库系统自动去判断某个SQL的新的执行计划是否更加合理的功能,只有在新的执行计划比原来的执行计划更好的情况下,该新的执行计划才会被使用。当检测到增量SQL语句预置了SQL执行计划管理SPM时,则说明该增量SQL语句绑定了固定的执行计划,执行步骤306;当检测到增量SQL语句未预置SQL执行计划管理SPM时,执行步骤310。
步骤306,判断预置了SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同。
若预置了SPM的增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划相同,则执行步骤314,不作处理;若预置了SPM的增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同,则执行步骤308。
举例来说,要获取表中的某一行数据,可以采取通过索引快速访问表的执行计划,也可以采取读取整个表并根据关键词进行筛选过滤得到数据的执行计划。具体选择哪个执行计划,是由Oracle数据库系统的优化器决定的。由于不同版本关系数据库系统之间的优化器之间会有所差异,所以相同的SQL语句若绑定了固定的执行计划,则该SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划可能出现不相同的情况。
步骤308,去除增量SQL语句的SPM。
当检测到增量SQL语句预置了SQL执行计划管理SPM,且增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同时,则去除增量SQL语句的SPM。在去除增量SQL语句的SPM之后,可将去除了SPM的增量SQL语句再次在旧版本环境和新版本环境中运行,进一步判断去除了SPM 的增量SQL语句的执行计划在旧版本环境和新版本环境中是否存在差异。
步骤310,判断未预置SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同。
若未预置SPM的增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划相同,则说明该增量SQL语句在新版本环境和旧版本环境性能相同,执行步骤314,不作处理;若否,则说明该增量SQL语句在新版本环境和旧版本环境性能不相同,需要进一步处理,执行步骤312。
步骤312,对增量SQL语句循环进行性能提升处理,直至增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
可根据上述对初始SQL语句进行处理的方式,对增量SQL语句循环进行性能提升处理,直至处理后的增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
步骤314,不作处理。
上述实施例中,对关系数据库系统版本准备升级至关系数据库系统版本升级的过程中新增的增量SQL语句进行了性能分析。通过判断增量SQL语句是否预置了SQL执行计划管理SPM,以及增量SQL语句是否在旧版本环境中的执行计划与在新版本环境中的执行计划相同,并根据判断结果对增量SQL语句进行了相应的处理,保证了增量SQL语句在关系数据库系统版本升级后的性能也不降低。
在一个实施例中,对低性能SQL语句进行性能提升处理包括:对低性能SQL 语句进行筛除处理;对进行筛除处理后的低性能SQL语句按照预设条数进行拆分处理,形成低性能SQL语句子集合;对低性能SQL语句子集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句子集合中的低性能 SQL语句;对得到的低性能SQL语句循环进行筛除处理、拆分处理和性能分析,直至低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能。
其中,筛除处理是指将不影响执行结果的低性能SQL语句进行剔除的处理。可筛除功能重复的低性能SQL语句。比如说,可对每个初始SQL语句都预设全局唯一的标识SQL_ID,该标识可通过hash算法生成。根据SQL_ID去除低性能SQL语句中重复的低性能SQL语句。再比如,可以提取出数据库子参数及执行结果相同的低性能SQL语句进行筛除。可以去除非绑定变量的低性能SQL语句,可通过FORCE_MATCHING_SIGNATURE字段查看非绑定变量的低性能 SQL语句。可将只执行一次的低性能SQL语句去除,比如去除DEVSUP、 DBMON、SOLIX、APPMGR等实名用户所对应的低性能SQL语句。可去除非应用发起的低性能SQL语句,比如用户发起的模块为“SQL*Plus”或“PL/SQL Developer”的SQL语句。可去除数据库本身发起的低性能SQL语句,比如说,去除优化器指令为“/*OPT_DYN_SAMP*/”的低性能SQL语句。还可去除无用的函数,比如说,去除与排序相关的用于生成序号的nextval函数。还可去除不会改变的静态数据,比如去除MIG相关配置表。
在一个实施例中,还可以去除没有抓到对应绑定变量值的包含绑定变量的低性能SQL语句。绑定变量的是来代替sql语句中的常量的变量,通过绑定变量可以减少SQL的解析,节约共享池的空间。提高并行度,并行度是指指令或数据并行执行的最大数目。比如有个低性能SQL语句通过改变eee这个谓词赋值来查询:select aaa,bbb from ccc whereddd=fff;select aaa,bbb from ccc where ddd=ggg;select aaa,bbb from ccc whereddd=hhh。其中,每条语句都要被数据库解析一次,这样比较浪费资源,如果把eee换成“:1”这样的绑定变量形式,无论ddd后面是什么值,都不需要重复解析。
其中,拆分处理是指将所有的低性能SQL语句拆分成多个低性能SQL语句子集合的处理。可以在通过逻辑读、执行次数、消耗时间等其中一种或多种数据库子参数筛选出所有低性能SQL语句中,性能消耗占比大于预设阈值的低性能SQL语句之后,对剩余的性能消耗占比小于预设阈值的低性能SQL语句进行拆分处理。比如说,按照预设数量,比如可将每10000个低性能SQL语句,拆分一个低性能SQL语句子集合。
对经过筛除处理和拆分处理之后得到的低性能SQL语句子集合分别进行回放处理及性能分析,可得到低性能SQL语句子集合中的低性能SQL语句。回放处理是指对低性能SQL语句子集合中的低性能SQL语句再次置于旧版本环境和新版本环境中执行。可提取出逻辑读在旧版本环境和新版本环境中存在差异的,即前后对比差值大于0的低性能SQL语句。还可去除回放有报错的,即回放执行次数为0。还可去除无回放SQL语句,即没有抓到绑定变量值但包含绑定变量的低性能SQL语句。还可将回放处理之后的低性能SQL语句子集合再次根据逻辑读、执行次数、消耗时间等其中一种或多种数据库子参数进行筛选,得到低性能SQL语句子集合中的核心SQL语句集合。对低性能SQL语句子集合中的核心SQL语句集合进行性能分析,可针对执行计划发生变化的,提取出执行次数大于预设执行次数,比如50,并且取出单次的逻辑读大于预设逻辑读,比如100,,并且满足变化率超过20%的低性能SQL语句。再次根据数据库子参数进行筛选,得到低性能SQL语句子集合中的低性能SQL语句。
上述实施例中,通过对低性能SQL语句不断循环进行上述筛除处理、拆分处理和性能分析,能够使得循环处理后的低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能,从而保证了关系数据库系统版本升级后 SQL语句的性能不降低。
应该理解的是,虽然图2和3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种SQL语句处理装置400,包括:数据库子参数获取模块402,用于获取每个初始SQL语句的数据库子参数;性能消耗占比计算模块404,用于根据数据库子参数进行计算,得到每个初始SQL 语句的性能消耗占比;核心SQL语句集合形成模块406,用于提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;低性能SQL语句提取模块408,用于将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于核心SQL语句集合中的初始SQL语句;低性能SQL语句处理模块410,对低性能SQL语句进行性能提升处理。
在一个实施例中,数据库子参数为多个,性能消耗占比计算模块404还用于获取所有初始SQL语句的数据库总参数;计算每个初始SQL语句的数据库子参数在相应的数据库总参数中的单性能占比;获取与数据库子参数对应的预设参考权重;根据多个数据库子参数对应的单性能占比和相应的预设参考权重进行计算,得到每个初始SQL语句的性能消耗占比。。
在一个实施例中,低性能SQL语句提取模块408还用于获取旧版本环境中的核心SQL语句集合;将旧版本环境中的核心SQL语句集合发送至新版本环境中;在新版本环境中创建并执行旧版本环境的SQL性能分析任务和新版本环境的SQL性能分析任务,分别得到第一分析参数和第二分析参数;第一分析参数是通过执行旧版本环境的SQL性能分析任务得到的分析参数;第二分析参数是通过执行新版本环境的SQL性能分析任务得到的分析参数。比较第一分析参数和第二分析参数,得到低性能SQL语句。
在一个实施例中,低性能SQL语句提取模块408还用于在旧版本环境中创建中转表;将旧版本环境中的核心SQL语句集合导入中转表;将存储有核心SQL 语句集合的中转表发送至新版本环境中进行解压,得到新版本环境中的核心 SQL语句集合。
在一个实施例中,低性能SQL语句处理模块410还用于对低性能SQL语句进行筛除处理;对进行筛除处理后的低性能SQL语句按照预设条数进行拆分处理,形成低性能SQL语句子集合;对低性能SQL语句子集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句子集合中的低性能SQL 语句;对得到的低性能SQL语句循环进行筛除处理、拆分处理和性能分析,直至低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能。
在一个实施例中,该装置还包括增量SQL语句处理模块,用于获取增量SQL 语句;当检测到增量SQL语句预置了SQL执行计划管理SPM,且增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同时,则去除增量SQL语句的SPM;判断未预置SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同;若否,则对增量SQL语句循环进行性能提升处理,直至增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
关于SQL语句处理装置的具体限定可以参见上文中对于SQL语句处理方法的限定,在此不再赘述。上述SQL语句处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储初始SQL语句等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种SQL语句处理方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取每个初始SQL语句的数据库子参数;根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比;提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于核心SQL语句集合中的初始SQL语句;对低性能SQL语句进行性能提升处理。
在一个实施例中,数据库子参数为多个,处理器执行计算机程序时,在所实现根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比的步骤之前,还实现以下步骤:获取所有初始SQL语句的数据库总参数;所实现的根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比的步骤,包括以下步骤:计算每个初始SQL语句的数据库子参数在相应的数据库总参数中的单性能占比;获取与数据库子参数对应的预设参考权重;根据多个数据库子参数对应的单性能占比和相应的预设参考权重进行计算,得到每个初始SQL 语句的性能消耗占比。。
在一个实施例中,处理器执行计算机程序时,所实现的将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句的步骤,包括以下步骤:获取旧版本环境中的核心SQL语句集合;将旧版本环境中的核心SQL语句集合发送至新版本环境中;在新版本环境中创建并执行旧版本环境的SQL性能分析任务和新版本环境的SQL性能分析任务,分别得到第一分析参数和第二分析参数;第一分析参数是通过执行旧版本环境的SQL性能分析任务得到的分析参数;第二分析参数是通过执行新版本环境的SQL性能分析任务得到的分析参数。比较第一分析参数和第二分析参数,得到低性能SQL语句。
在一个实施例中,处理器执行计算机程序时,所实现的将旧版本环境中的 SQL语句集合发送至新版本环境中的步骤,包括以下步骤:在旧版本环境中创建中转表;将旧版本环境中的核心SQL语句集合导入中转表;将存储有核心SQL 语句集合的中转表发送至新版本环境中进行解压,得到新版本环境中的核心 SQL语句集合。
在一个实施例中,处理器执行计算机程序时,所实现的对低性能SQL语句进行性能提升处理的步骤,包括以下步骤:对低性能SQL语句进行筛除处理;对进行筛除处理后的低性能SQL语句按照预设条数进行拆分处理,形成低性能 SQL语句子集合;对低性能SQL语句子集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句子集合中的低性能SQL语句;对得到的低性能SQL语句循环进行筛除处理、拆分处理和性能分析,直至低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能。
在一个实施例中,处理器执行计算机程序时,还实现以下步骤:获取增量 SQL语句;当检测到增量SQL语句预置了SQL执行计划管理SPM,且增量SQL 语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同时,则去除增量SQL语句的SPM;判断未预置SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同;若否,则对增量SQL语句循环进行性能提升处理,直至增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
在一个实施例中,数据库子参数包括逻辑读、执行次数和消耗时间。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取每个初始SQL语句的数据库子参数;根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比;提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于核心SQL语句集合中的初始SQL语句;对低性能SQL语句进行性能提升处理。
在一个实施例中,数据库子参数为多个,计算机程序被处理器执行时,在所实现根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比的步骤之前,还实现以下步骤:获取所有初始SQL语句的数据库总参数;所实现的根据数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比的步骤,包括以下步骤:计算每个初始SQL语句的数据库子参数在相应的数据库总参数中的单性能占比;获取与数据库子参数对应的预设参考权重;根据多个数据库子参数对应的单性能占比和相应的预设参考权重进行计算,得到每个初始SQL 语句的性能消耗占比。。
在一个实施例中,计算机程序被处理器执行时,所实现的将核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句的步骤,包括以下步骤:获取旧版本环境中的核心SQL语句集合;将旧版本环境中的核心SQL语句集合发送至新版本环境中;在新版本环境中创建并执行旧版本环境的SQL性能分析任务和新版本环境的SQL性能分析任务,分别得到第一分析参数和第二分析参数;第一分析参数是通过执行旧版本环境的SQL性能分析任务得到的分析参数;第二分析参数是通过执行新版本环境的SQL性能分析任务得到的分析参数。比较第一分析参数和第二分析参数,得到低性能SQL 语句。
在一个实施例中,计算机程序被处理器执行时,所实现的将旧版本环境中的SQL语句集合发送至新版本环境中的步骤,包括以下步骤:在旧版本环境中创建中转表;将旧版本环境中的核心SQL语句集合导入中转表;将存储有核心 SQL语句集合的中转表发送至新版本环境中进行解压,得到新版本环境中的核心SQL语句集合。
在一个实施例中,计算机程序被处理器执行时,所实现的对低性能SQL语句进行性能提升处理的步骤,包括以下步骤:对低性能SQL语句进行筛除处理;对进行筛除处理后的低性能SQL语句按照预设条数进行拆分处理,形成低性能 SQL语句子集合;对低性能SQL语句子集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句子集合中的低性能SQL语句;对得到的低性能SQL语句循环进行筛除处理、拆分处理和性能分析,直至低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能。
在一个实施例中,计算机程序被处理器执行时,还实现以下步骤:获取增量SQL语句;当检测到增量SQL语句预置了SQL执行计划管理SPM,且增量 SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同时,则去除增量SQL语句的SPM;判断未预置SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同;若否,则对增量SQL语句循环进行性能提升处理,直至增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
在一个实施例中,数据库子参数包括逻辑读、执行次数和消耗时间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程 ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限, RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步 DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM (ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus) 直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (13)

1.一种SQL语句处理方法,所述方法包括:
获取每个初始SQL语句的数据库子参数;所述数据库子参数是指一个初始SQL语句在关系数据库系统中运行之后得到的参数,所述数据库子参数包括逻辑读、执行次数和消耗时间的其中一种或多种;
根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比;
提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;所述核心SQL语句集合是指由性能消耗占比大于预设阈值的多个初始SQL语句所形成的集合;
将所述核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;所述低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于所述核心SQL语句集合中的初始SQL语句;
对所述低性能SQL语句进行性能提升处理;
所述方法还包括:
获取增量SQL语句;
当检测到所述增量SQL语句预置了SQL执行计划管理SPM,且所述增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同时,则去除所述增量SQL语句的SPM;
判断未预置SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同;
若否,则对所述增量SQL语句循环进行性能提升处理,直至增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
2.根据权利要求1所述的方法,其特征在于,所述数据库子参数为多个;在所述根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比之前,还包括:
获取所有初始SQL语句的数据库总参数;
所述根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比,包括:
计算每个初始SQL语句的数据库子参数在相应的数据库总参数中的单性能占比;
获取与数据库子参数对应的预设参考权重;
根据多个数据库子参数对应的单性能占比和相应的预设参考权重进行计算,得到每个初始SQL语句的性能消耗占比。
3.根据权利要求1所述的方法,其特征在于,所述将所述核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句,包括:
获取旧版本环境中的核心SQL语句集合;
将旧版本环境中的核心SQL语句集合发送至新版本环境中;
在新版本环境中创建并执行旧版本环境的SQL性能分析任务和新版本环境的SQL性能分析任务,分别得到第一分析参数和第二分析参数;所述第一分析参数是通过执行所述旧版本环境的SQL性能分析任务得到的分析参数;所述第二分析参数是通过执行所述新版本环境的SQL性能分析任务得到的分析参数;
比较第一分析参数和第二分析参数,得到低性能SQL语句。
4.根据权利要求3所述的方法,其特征在于,所述将旧版本环境中的SQL语句集合发送至新版本环境中,包括:
在所述旧版本环境中创建中转表;
将所述旧版本环境中的核心SQL语句集合导入所述中转表;
将存储有核心SQL语句集合的中转表发送至新版本环境中进行解压,得到所述新版本环境中的核心SQL语句集合。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述对所述低性能SQL语句进行性能提升处理,包括:
对所述低性能SQL语句进行筛除处理;
对进行筛除处理后的低性能SQL语句按照预设条数进行拆分处理,形成低性能SQL语句子集合;
对低性能SQL语句子集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句子集合中的低性能SQL语句;
对得到的低性能SQL语句循环进行筛除处理、拆分处理和性能分析,直至低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能。
6.根据权利要求1至4任意一项所述的方法,其特征在于,所述数据库子参数包括逻辑读、执行次数和消耗时间。
7.一种SQL语句处理装置,其特征在于,所述装置包括:
数据库子参数获取模块,用于获取每个初始SQL语句的数据库子参数;所述数据库子参数是指一个初始SQL语句在关系数据库系统中运行之后得到的参数,所述数据库子参数包括逻辑读、执行次数和消耗时间的其中一种或多种;
性能消耗占比计算模块,用于根据所述数据库子参数进行计算,得到每个初始SQL语句的性能消耗占比;
核心SQL语句集合形成模块,用于提取性能消耗占比大于预设阈值的初始SQL语句,形成核心SQL语句集合;所述核心SQL语句集合是指由性能消耗占比大于预设阈值的多个初始SQL语句所形成的集合;
低性能SQL语句提取模块,用于将所述核心SQL语句集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句;所述低性能SQL语句为在新版本环境的性能低于在旧版本环境的性能的、处于所述核心SQL语句集合中的初始SQL语句;
低性能SQL语句处理模块,对所述低性能SQL语句进行性能提升处理;
所述装置还包括:
增量SQL语句处理模块,用于获取增量SQL语句;当检测到所述增量SQL语句预置了SQL执行计划管理SPM,且所述增量SQL语句在旧版本环境中的执行计划与在新版本环境中的执行计划不相同时,则去除所述增量SQL语句的SPM;判断未预置SPM的增量SQL语句在旧版本环境中的执行计划是否与在新版本环境中的执行计划相同;若否,则对所述增量SQL语句循环进行性能提升处理,直至增量SQL语句在旧版本环境中的性能大于等于在新版本环境中的性能。
8.根据权利要求7所述的装置,其特征在于,所述数据库子参数为多个;所述性能消耗占比计算模块,还用于获取所有初始SQL语句的数据库总参数;计算每个初始SQL语句的数据库子参数在相应的数据库总参数中的单性能占比;获取与数据库子参数对应的预设参考权重;根据多个数据库子参数对应的单性能占比和相应的预设参考权重进行计算,得到每个初始SQL语句的性能消耗占比。
9.根据权利要求7所述的装置,其特征在于,所述低性能SQL语句提取模块,还用于获取旧版本环境中的核心SQL语句集合;将旧版本环境中的核心SQL语句集合发送至新版本环境中;在新版本环境中创建并执行旧版本环境的SQL性能分析任务和新版本环境的SQL性能分析任务,分别得到第一分析参数和第二分析参数;所述第一分析参数是通过执行所述旧版本环境的SQL性能分析任务得到的分析参数;所述第二分析参数是通过执行所述新版本环境的SQL性能分析任务得到的分析参数;比较第一分析参数和第二分析参数,得到低性能SQL语句。
10.根据权利要求9所述的装置,其特征在于,所述低性能SQL语句提取模块,还用于在所述旧版本环境中创建中转表;将所述旧版本环境中的核心SQL语句集合导入所述中转表;将存储有核心SQL语句集合的中转表发送至新版本环境中进行解压,得到所述新版本环境中的核心SQL语句集合。
11.根据权利要求7至10任意一项所述的装置,其特征在于,所述低性能SQL语句处理模块,还用于对所述低性能SQL语句进行筛除处理;对进行筛除处理后的低性能SQL语句按照预设条数进行拆分处理,形成低性能SQL语句子集合;对低性能SQL语句子集合分别置于旧版本环境和新版本环境中进行性能分析,得到低性能SQL语句子集合中的低性能SQL语句;对得到的低性能SQL语句循环进行筛除处理、拆分处理和性能分析,直至低性能SQL语句在新版本环境中的性能大于等于在旧版本环境中的性能。
12.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN201810091240.5A 2018-01-30 2018-01-30 Sql语句处理方法、装置、计算机设备和存储介质 Active CN108197306B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810091240.5A CN108197306B (zh) 2018-01-30 2018-01-30 Sql语句处理方法、装置、计算机设备和存储介质
PCT/CN2018/088974 WO2019148713A1 (zh) 2018-01-30 2018-05-30 Sql语句处理方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810091240.5A CN108197306B (zh) 2018-01-30 2018-01-30 Sql语句处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN108197306A CN108197306A (zh) 2018-06-22
CN108197306B true CN108197306B (zh) 2020-08-25

Family

ID=62591958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810091240.5A Active CN108197306B (zh) 2018-01-30 2018-01-30 Sql语句处理方法、装置、计算机设备和存储介质

Country Status (2)

Country Link
CN (1) CN108197306B (zh)
WO (1) WO2019148713A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213664A (zh) * 2018-08-23 2019-01-15 北京小度信息科技有限公司 Sql语句的性能分析方法、装置、存储介质和电子设备
CN109240901B (zh) * 2018-08-28 2023-01-17 北京星选科技有限公司 性能分析方法、性能分析装置、存储介质和电子设备
CN109542868A (zh) * 2018-09-28 2019-03-29 中国平安人寿保险股份有限公司 定位异常sql语句的方法、装置、电子设备及存储介质
CN109871372B (zh) * 2019-01-29 2021-01-19 公安部第一研究所 一种结合数据库调优和程序调优的方法
CN110134706A (zh) * 2019-04-01 2019-08-16 平安科技(深圳)有限公司 Sql语句自动优化方法、装置、计算机设备以及存储介质
CN111309581B (zh) * 2020-02-28 2023-09-12 中国工商银行股份有限公司 一种数据库升级场景下的应用性能检测方法及装置
CN111797112B (zh) * 2020-06-05 2022-04-01 武汉大学 一种PostgreSQL预备语句执行优化方法
CN112035513A (zh) * 2020-09-02 2020-12-04 中国平安人寿保险股份有限公司 Sql语句性能优化方法、装置、终端及存储介质
CN112181840B (zh) * 2020-09-30 2023-09-26 深圳前海微众银行股份有限公司 一种数据库状态的确定方法及装置、设备、存储介质
CN112395305B (zh) * 2020-11-11 2024-04-16 中国人寿保险股份有限公司 一种sql语句分析方法、装置、电子设备及存储介质
CN114647659A (zh) * 2020-12-17 2022-06-21 金篆信科有限责任公司 数据处理方法、装置、电子设备、存储介质
EP4148581B1 (en) * 2021-09-10 2023-08-30 Axis AB Verification of updated analytical procedures in monitoring systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399851A (zh) * 2013-06-25 2013-11-20 携程计算机技术(上海)有限公司 一种结构化查询语言(sql)脚本的性能分析与预测方法与系统
CN106445795A (zh) * 2016-09-26 2017-02-22 中国工商银行股份有限公司 一种数据库sql效率检测方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541884B (zh) * 2010-12-10 2014-07-02 中国移动通信集团贵州有限公司 数据库优化方法和装置
US9146946B2 (en) * 2013-05-09 2015-09-29 International Business Machines Corporation Comparing database performance without benchmark workloads

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103399851A (zh) * 2013-06-25 2013-11-20 携程计算机技术(上海)有限公司 一种结构化查询语言(sql)脚本的性能分析与预测方法与系统
CN106445795A (zh) * 2016-09-26 2017-02-22 中国工商银行股份有限公司 一种数据库sql效率检测方法及装置

Also Published As

Publication number Publication date
CN108197306A (zh) 2018-06-22
WO2019148713A1 (zh) 2019-08-08

Similar Documents

Publication Publication Date Title
CN108197306B (zh) Sql语句处理方法、装置、计算机设备和存储介质
US10521224B2 (en) Automatic identification of relevant software projects for cross project learning
JP5298117B2 (ja) 分散コンピューティングにおけるデータマージング
US10289541B2 (en) Source code flow analysis using information retrieval
US9356966B2 (en) System and method to provide management of test data at various lifecycle stages
US10324710B2 (en) Indicating a trait of a continuous delivery pipeline
WO2016165562A1 (en) Apparatus and method for using parameterized intermediate representation for just-in-time compilation in database query execution engine
CN111984659B (zh) 数据更新方法、装置、计算机设备和存储介质
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
CN110659297A (zh) 数据处理方法、装置、计算机设备和存储介质
Tan et al. Hadoop framework: impact of data organization on performance
CN109656947B (zh) 数据查询方法、装置、计算机设备和存储介质
CN104933096A (zh) 数据库的异常键识别方法、装置与数据系统
CN112579705A (zh) 元数据采集方法、装置、计算机设备和存储介质
CN111858366A (zh) 一种测试用例生成方法、装置、设备及存储介质
KR20130047431A (ko) 대용량 배치처리를 위한 메모리 선적재 및 병렬처리 방법
CN115757172A (zh) 测试执行方法、装置、存储介质及计算机设备
CN110990648A (zh) 一种病毒查询方法、服务器及计算机可读存储介质
CN112948188A (zh) 一种日志文件筛查方法、系统及介质
CN112181831A (zh) 基于关键词的脚本性能校验方法、装置、设备及存储介质
WO2016015276A1 (en) Analysis of system information
CN106855842B (zh) 一种基于正则表达式的程序静态分析方法
CN113760489B (zh) 一种资源配置方法和装置
CN111309572B (zh) 测试分析方法、装置、计算机设备及存储介质
US11874799B1 (en) Systems and methods for memory management in source agnostic content staging

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