CN102393842A - 指令处理装置和指令处理方法 - Google Patents
指令处理装置和指令处理方法 Download PDFInfo
- Publication number
- CN102393842A CN102393842A CN2011101772392A CN201110177239A CN102393842A CN 102393842 A CN102393842 A CN 102393842A CN 2011101772392 A CN2011101772392 A CN 2011101772392A CN 201110177239 A CN201110177239 A CN 201110177239A CN 102393842 A CN102393842 A CN 102393842A
- Authority
- CN
- China
- Prior art keywords
- instruction
- database
- command
- metadata information
- resource consumption
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种指令处理装置和一种指令处理方法。其中,指令处理装置包括:信息获取模块,获取数据库的元数据信息;指令执行估算模块,根据元数据信息,估算待发送给数据库的指令在被执行时的资源消耗;指令处理模块,判断资源消耗是否超过预设阈值,并在判断结果为否时,允许指令发送至数据库,在判断结果为是时,禁止指令发送至数据库。通过本发明,能够在指令发送到数据库执行前,通过判断其是否占用了太多资源,确认是否允许其执行,防止了不良指令占用太多资源而对基于数据库的整个系统造成影响。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种指令处理装置和一种指令处理方法。
背景技术
ERP以及其他大型企业软件往往由数百人合作而成。尽管通过代码走查和多层测试,但从统计的观点看,软件中仍然存在一些设计不良之处。其中有一类问题,就是将不良的数据库指令交给关系数据库执行,例如SQL语句。这些命令一旦交给关系数据库执行,会带来巨大的IO或内存开销,进而有可能造成整个ERP系统运行效率缓慢,甚至崩溃。
目前的解决方案有,使用代码静态扫描程序找到设计不良的SQL语句。此方法虽然有一定效果,但存在两个显而易见的问题:1、无法分析运行时动态产生的SQL命令;2、难于估计实际的执行成本(IO/内存),因为数据库表内的数据、索引信息都是动态变化的。
还有一种方法,就是设定SQL执行超时的时间。当SQL执行超过预先设定的阀值后,切断SQL语句的执行。这个方法可以在一定程度上缓解SQL语句的“单点问题”扩散至整体,但是SQL执行超时不一定是当前SQL语句功能点的设计问题,可能和关系数据库同时执行的其他SQL命令有关,不能准确的限定问题。
因此,需要一种新的用于判定数据库查询指令是否存在设计不良的方式,能够准确判断出哪个指令存在不良问题,并能够阻止其发送到数据库执行,防止对数据库相关的整个系统造成影响。
发明内容
本发明所要解决的技术问题在于,提供一种新的用于判定数据库查询指令是否存在设计不良的方式,能够准确判断出哪个指令存在不良问题,并能够阻止其发送到数据库执行,防止对数据库相关的整个系统造成影响。
有鉴于此,本发明提供一种指令处理装置,包括:信息获取模块,获取数据库的元数据信息;指令执行估算模块,根据元数据信息,估算待发送给数据库的指令在被执行时的资源消耗;指令处理模块,判断资源消耗是否超过预设阈值,并在判断结果为否时,允许指令发送至数据库,在判断结果为是时,禁止指令发送至数据库。通过该技术方案,能够在指令发送到数据库执行前,通过判断其是否占用了太多资源,确认是否允许其执行,防止了不良指令占用太多资源而对基于数据库的整个系统造成影响。
在上述技术方案中,优选地,资源消耗包括:执行指令所需要的数据量;执行指令将要输出的结果数据量;执行指令所需要占用的内存。
在上述技术方案中,优选地,指令处理模块还在判断结果为是时,通过日志记录指令。通过该技术方案,有利于快速找到可能有缺陷的指令,并对其进行改进。
在上述技术方案中,优选地,信息获取模块按预定时间或周期,获取元数据信息。
在上述技术方案中,优选地,元数据信息包括:表描述、字段描述、索引描述以及每个表的数据量、字段数据分布情况统计。
本发明还提供一种指令处理方法,包括:步骤202,获取数据库的元数据信息;步骤204,根据元数据信息,估算待发送给数据库的指令在被执行时的资源消耗;步骤206,判断资源消耗是否超过预设阈值,并在判断结果为否时,允许指令发送至数据库,在判断结果为是时,禁止指令发送至数据库。通过该技术方案,能够在指令发送到数据库执行前,通过判断其是否占用了太多资源,确认是否允许其执行,防止了不良指令占用太多资源而对基于数据库的整个系统造成影响。
在上述技术方案中,优选地,资源消耗包括:执行指令所需要的数据量;执行指令将要输出的结果数据量;执行指令所需要占用的内存。
在上述技术方案中,优选地,在步骤206中,在判断结果为是时,还包括:通过日志记录指令。通过该技术方案,有利于快速找到可能有缺陷的指令,并对其进行改进。
在上述技术方案中,优选地,在步骤202中,按预定时间或周期,获取元数据信息。
在上述技术方案中,优选地,元数据信息包括:表描述、字段描述、索引描述以及每个表的数据量、字段数据分布情况统计。
通过以上技术方案,可以实现一种指令处理装置和一种指令处理方法,能够准确判断出哪个指令存在不良问题,并能够阻止其发送到数据库执行,防止对数据库相关的整个系统造成影响。
附图说明
图1是根据本发明的一个实施例的指令处理装置的框图;
图2是根据本发明的一个实施例的指令处理方法的流程图;
图3是根据本发明的一个实施例的指令处理装置的工作示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
图1是根据本发明的一个实施例的指令处理装置的框图。
如图1所示,本发明提供一种指令处理装置100,包括:信息获取模块102,获取数据库的元数据信息;指令执行估算模块104,根据元数据信息,估算待发送给数据库的指令在被执行时的资源消耗;指令处理模块106,判断资源消耗是否超过预设阈值,并在判断结果为否时,允许指令发送至数据库,在判断结果为是时,禁止指令发送至数据库。通过该技术方案,能够在指令发送到数据库执行前,通过判断其是否占用了太多资源,确认是否允许其执行,防止了不良指令占用太多资源而对基于数据库的整个系统造成影响。
在上述技术方案中,资源消耗包括:执行指令所需要的数据量;执行指令将要输出的结果数据量;执行指令所需要占用的内存。
在上述技术方案中,指令处理模块106还在判断结果为是时,通过日志记录指令。通过该技术方案,有利于快速找到可能有缺陷的指令,并对其进行改进。
在上述技术方案中,信息获取模块102按预定时间或周期,获取元数据信息。
在上述技术方案中,元数据信息包括:表描述、字段描述、索引描述以及每个表的数据量、字段数据分布情况统计。
图2是根据本发明的一个实施例的指令处理方法的流程图。
如图2所示,本发明还提供一种指令处理方法,包括:步骤202,获取数据库的元数据信息;步骤204,根据元数据信息,估算待发送给数据库的指令在被执行时的资源消耗;步骤206,判断资源消耗是否超过预设阈值,并在判断结果为否时,允许指令发送至数据库,在判断结果为是时,禁止指令发送至数据库。通过该技术方案,能够在指令发送到数据库执行前,通过判断其是否占用了太多资源,确认是否允许其执行,防止了不良指令占用太多资源而对基于数据库的整个系统造成影响。
在上述技术方案中,资源消耗包括:执行指令所需要的数据量;执行指令将要输出的结果数据量;执行指令所需要占用的内存。
在上述技术方案中,在步骤206中,在判断结果为是时,还包括:通过日志记录指令。通过该技术方案,有利于快速找到可能有缺陷的指令,并对其进行改进。
在上述技术方案中,在步骤202中,按预定时间或周期,获取元数据信息。
在上述技术方案中,元数据信息包括:表描述、字段描述、索引描述以及每个表的数据量、字段数据分布情况统计。
图3是根据本发明的一个实施例的指令处理装置的工作示意图。
以下结合图3,对根据本发明实施例的指令处理装置的工作流程进行说明。
1.指令处理装置300调取数据库元数据信息304。
首先,指令处理装置300在启动时从数据库302中调取数据库元数据信息304。在该装置运行后,还会周期性同步元数据信息304。
其中,缓存在指令处理装置300的数据库元数据信息304包含以下内容:“表描述”、“字段描述”、“索引描述”和“每个表的数据量”、“字段数据分布情况统计”等等。这些元数据被用于进行SQL执行计划估计。
2.指令处理装置300执行SQL执行计划估计。
此处分析需要执行的SQL语句,需要执行的语句可能包括正常SQL语句306和问题SQL语句308。指令处理装置300读取缓存在进程(就是一般操作系统的进程,行业通用术语)内的SQL元数据信息304。执行计划估计,以估算计算消耗。当计算消耗超过预先设定的阀值,则阻断SQL命令向数据库发送。具体分析的数据有:
I/O分析:检查SQL语句的查询条件是否建立在索引基础之上。如果查询可以使用索引信息,允许SQL语句发送至数据库,否则查看查询所需的表的数据量,如果大于指定阀值A(比如1万),则禁止其发送至数据库。
内存占用分析:检查SQL语句内的Join是否会产生巨大的笛卡儿积。如果Join产生的笛卡尔积超过了指定阀值B(比如5000)列或者超过了阀值C(比如100万)行,则禁止该SQL语句发送至数据库。
阀值A,B,C按照经验根据具体情况设定。这些值的设定并不影响本发明的技术方案。
3.正常的SQL语句306。
对于能够通过SQL执行计划估计的SQL语句306,指令处理装置300将其转发到数据库302,数据结果返回并不通过该装置,而是直接交给具体的应用模块,返回给模块中的SQL语句。
4.有问题的SQL语句308。
对于不能通过SQL执行计划估计的SQL语句308,指令处理装置300会被阻断这些SQL命令向数据库302的提交,它们不会被数据库302执行。出现问题的语句308和当前执行堆栈(线程的一部分,行业通用术语)被记录在运行日志中,方便日后分析问题SQL语句308的来源。
根据以上指令处理装置300的示例如下:
需要注意的是,尽管本实施例中使用SQL(结构化查询语言)进行描述。但类似的其他查询语言比如Linq(语言集成查询)、OQL(对象查询语言)、EntityQuery(实体查询)或者其他数据库查询指令都适用于本实施例中的指令处理装置。
通过以上技术方案,可以实现一种指令处理装置和一种指令处理方法,能够准确判断出哪个指令存在不良问题,并能够阻止其发送到数据库执行,防止对数据库相关的整个系统造成影响。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种指令处理装置,其特征在于,包括:
信息获取模块,获取数据库的元数据信息;
指令执行估算模块,根据所述元数据信息,估算待发送给所述数据库的指令在被执行时的资源消耗;
指令处理模块,判断所述资源消耗是否超过预设阈值,并在判断结果为否时,允许所述指令发送至所述数据库,在判断结果为是时,禁止所述指令发送至所述数据库。
2.根据权利要求1所述的指令处理装置,其特征在于,所述资源消耗包括:
执行所述指令所需要的数据量;
执行所述指令将要输出的结果数据量;
执行所述指令所需要占用的内存。
3.根据权利要求1所述的指令处理装置,其特征在于,所述指令处理模块还在判断结果为是时,通过日志记录所述指令。
4.根据权利要求1所述的指令处理装置,其特征在于,所述信息获取模块按预定时间或周期,获取所述元数据信息。
5.根据权利要求1至4中任一项所述的指令处理装置,其特征在于,所述元数据信息包括:
表描述、字段描述、索引描述以及每个表的数据量、字段数据分布情况统计。
6.一种指令处理方法,其特征在于,包括:
步骤202,获取数据库的元数据信息;
步骤204,根据所述元数据信息,估算待发送给所述数据库的指令在被执行时的资源消耗;
步骤206,判断所述资源消耗是否超过预设阈值,并在判断结果为否时,允许所述指令发送至所述数据库,在判断结果为是时,禁止所述指令发送至所述数据库。
7.根据权利要求6所述的指令处理方法,其特征在于,所述资源消耗包括:
执行所述指令所需要的数据量;
执行所述指令将要输出的结果数据量;
执行所述指令所需要占用的内存。
8.根据权利要求6所述的指令处理方法,其特征在于,在所述步骤206中,在判断结果为是时,还包括:
通过日志记录所述指令。
9.根据权利要求6所述的指令处理方法,其特征在于,在所述步骤202中,按预定时间或周期,获取所述元数据信息。
10.根据权利要求6至9中任一项所述的指令处理方法,其特征在于,所述元数据信息包括:
表描述、字段描述、索引描述以及每个表的数据量、字段数据分布情况统计。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101772392A CN102393842A (zh) | 2011-06-28 | 2011-06-28 | 指令处理装置和指令处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101772392A CN102393842A (zh) | 2011-06-28 | 2011-06-28 | 指令处理装置和指令处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102393842A true CN102393842A (zh) | 2012-03-28 |
Family
ID=45861168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101772392A Pending CN102393842A (zh) | 2011-06-28 | 2011-06-28 | 指令处理装置和指令处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102393842A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298701A (zh) * | 2014-07-18 | 2015-01-21 | 技嘉科技股份有限公司 | I2c/spi指令之侦测与解读装置及方法 |
CN106407246A (zh) * | 2016-07-22 | 2017-02-15 | 平安科技(深圳)有限公司 | Sql执行计划管理的方法及装置 |
CN109213664A (zh) * | 2018-08-23 | 2019-01-15 | 北京小度信息科技有限公司 | Sql语句的性能分析方法、装置、存储介质和电子设备 |
CN110445632A (zh) * | 2018-05-04 | 2019-11-12 | 北京京东尚科信息技术有限公司 | 一种预防客户端崩溃的方法和装置 |
CN111797112A (zh) * | 2020-06-05 | 2020-10-20 | 武汉大学 | 一种PostgreSQL预备语句执行优化方法 |
CN113597606A (zh) * | 2019-01-14 | 2021-11-02 | 微软技术许可有限责任公司 | 数据库索引确定和验证 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030065648A1 (en) * | 2001-10-03 | 2003-04-03 | International Business Machines Corporation | Reduce database monitor workload by employing predictive query threshold |
US20060294079A1 (en) * | 2003-02-20 | 2006-12-28 | Dettinger Richard D | Incremental data query performance feedback model |
US20080222087A1 (en) * | 2006-05-15 | 2008-09-11 | International Business Machines Corporation | System and Method for Optimizing Query Access to a Database Comprising Hierarchically-Organized Data |
US20080306903A1 (en) * | 2007-06-08 | 2008-12-11 | Microsoft Corporation | Cardinality estimation in database systems using sample views |
-
2011
- 2011-06-28 CN CN2011101772392A patent/CN102393842A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030065648A1 (en) * | 2001-10-03 | 2003-04-03 | International Business Machines Corporation | Reduce database monitor workload by employing predictive query threshold |
US20060294079A1 (en) * | 2003-02-20 | 2006-12-28 | Dettinger Richard D | Incremental data query performance feedback model |
US20080222087A1 (en) * | 2006-05-15 | 2008-09-11 | International Business Machines Corporation | System and Method for Optimizing Query Access to a Database Comprising Hierarchically-Organized Data |
US20080306903A1 (en) * | 2007-06-08 | 2008-12-11 | Microsoft Corporation | Cardinality estimation in database systems using sample views |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298701A (zh) * | 2014-07-18 | 2015-01-21 | 技嘉科技股份有限公司 | I2c/spi指令之侦测与解读装置及方法 |
CN104298701B (zh) * | 2014-07-18 | 2017-09-22 | 技嘉科技股份有限公司 | I2c/spi指令之侦测与解读装置及方法 |
CN106407246A (zh) * | 2016-07-22 | 2017-02-15 | 平安科技(深圳)有限公司 | Sql执行计划管理的方法及装置 |
CN106407246B (zh) * | 2016-07-22 | 2020-12-04 | 平安科技(深圳)有限公司 | Sql执行计划管理的方法及装置 |
CN110445632A (zh) * | 2018-05-04 | 2019-11-12 | 北京京东尚科信息技术有限公司 | 一种预防客户端崩溃的方法和装置 |
CN110445632B (zh) * | 2018-05-04 | 2023-09-01 | 北京京东尚科信息技术有限公司 | 一种预防客户端崩溃的方法和装置 |
CN109213664A (zh) * | 2018-08-23 | 2019-01-15 | 北京小度信息科技有限公司 | Sql语句的性能分析方法、装置、存储介质和电子设备 |
CN113597606A (zh) * | 2019-01-14 | 2021-11-02 | 微软技术许可有限责任公司 | 数据库索引确定和验证 |
CN111797112A (zh) * | 2020-06-05 | 2020-10-20 | 武汉大学 | 一种PostgreSQL预备语句执行优化方法 |
CN111797112B (zh) * | 2020-06-05 | 2022-04-01 | 武汉大学 | 一种PostgreSQL预备语句执行优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642832B1 (en) | Reducing the domain of a subquery by retrieving constraints from the outer query | |
CN102393842A (zh) | 指令处理装置和指令处理方法 | |
EP3182288A1 (en) | Systems and methods for generating performance prediction model and estimating execution time for applications | |
US9535818B2 (en) | Identifying high impact bugs | |
US9354867B2 (en) | System and method for identifying, analyzing and integrating risks associated with source code | |
US20090287729A1 (en) | Source code coverage testing | |
US20120290527A1 (en) | Data extraction and testing method and system | |
US9471651B2 (en) | Adjustment of map reduce execution | |
US9836504B2 (en) | Query progress estimation based on processed value packets | |
US11003574B2 (en) | Optimized testing system | |
CN104778185B (zh) | 异常结构化查询语言sql语句确定方法及服务器 | |
US10860465B2 (en) | Automatically rerunning test executions | |
CN103092761A (zh) | 基于差异信息文件识别和检查修改代码块的方法及装置 | |
CN103679038B (zh) | 并行程序共享数据类漏洞的检测方法及系统 | |
US11120521B2 (en) | Techniques for graphics processing unit profiling using binary instrumentation | |
CN103870382A (zh) | 一种代码风险的检测方法及装置 | |
CN104572474A (zh) | 一种基于动态切片的轻量级错误定位技术实现方法 | |
CN103645961A (zh) | 计算密集型并行任务的异常检测方法及系统 | |
KR101198397B1 (ko) | 원자력 발전소 출력운전 중 범용 리스크감시 시스템 및 그 방법 | |
US9195730B2 (en) | Verifying correctness of a database system via extended access paths | |
CN106407246B (zh) | Sql执行计划管理的方法及装置 | |
CN104461864A (zh) | 一种基于Eclipse插件的Java源代码缺陷检测方法及其系统 | |
CN102968305B (zh) | 逻辑处理方法、装置及测评系统 | |
CN102567351A (zh) | 一种数据库变更效果的测试方法及测试装置 | |
US20140208288A1 (en) | Apparatus and Method for Managing a Software Development and Maintenance System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120328 |