CN102651010A - 用于数据库转储的方法、设备和系统 - Google Patents
用于数据库转储的方法、设备和系统 Download PDFInfo
- Publication number
- CN102651010A CN102651010A CN2011100516420A CN201110051642A CN102651010A CN 102651010 A CN102651010 A CN 102651010A CN 2011100516420 A CN2011100516420 A CN 2011100516420A CN 201110051642 A CN201110051642 A CN 201110051642A CN 102651010 A CN102651010 A CN 102651010A
- Authority
- CN
- China
- Prior art keywords
- dump
- sql statement
- sql
- diagnostic markers
- response
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式用于数据库转储的方法、设备和系统。具体地,公开了一种用于控制数据库的转储的方法,包括:响应于针对数据库的结构化查询语言SQL语句被执行,确定与所述SQL语句相关联的诊断标志的状态,所述诊断标志指示是否执行转储;以及响应于所述诊断标志的状态被确定为有效,执行针对所述SQL语句的转储。特别地,根据本发明的实施方式,转储不但可以特定于SQL语句,而且还可以特定于SQL语句所包含的任何处理步骤。还公开了相应的设备和系统。根据本发明的实施方式,数据库SQL问题诊断的灵活性和针对性可得以改善。
Description
技术领域
本发明的实施方式总体上涉及数据库领域,并且更具体地,涉及用于数据库转储的方法、设备和系统。
背景技术
如本领域已知的,数据库在现代信息技术中发挥着重要作用。例如,作为数据库的重要类型之一,关系数据库系统被广泛地应用于存储和检索各类信息。通常,存储在关系数据库中的数据可以使用结构化查询语言(SQL)来进行操作。SQL是一种针对数据库的查询和操作而设计的结构化描述语言。SQL语句仅描述数据检索的高层准则,而不涉及数据库系统的具体细节。SQL的这一抽象特点将开发和维护人员从数据库操作的底层操作(例如,数据的位置、访问方法,等等)中解放出来,极大地提高了开发和维护的效率和方便程度。然而,另一方面,为了支持这种抽象,用于实现具体底层操作的数据库管理系统(例如,关系数据库管理系统RDBMS)需要在功能上具有较高的复杂性。
在数据库管理系统的开发、调试和维护中,相关人员往往需要基于数据库操作过程中出现的SQL错误,来诊断数据库管理系统中存在的问题以及导致该问题的根源,从而能够采取必要的修改和/或维护措施。然而,随着关系数据库管理系统的复杂性不断增加,对SQL问题的诊断越来越困难。
特别地,如果数据库操作中的SQL错误发生在客户方,并且这种错误无法在实验室环境中重现,则开发和维护人员很难准确地诊断出错误发生的原因。不幸的是,实践中的情况往往如此。这是因为在实验室环境中,通常难以严格按照实际错误发生时的客户上下文来请求数据和/或表,从而也就无法重现问题发生时的真实情境。
为了能够诊断此类不可重现的SQL问题,现有技术中已经提出了若干解决方案。例如,在某些现有技术的方案中,对数据库问题的诊断依赖于日志和跟踪技术。然而,此类方案无法反映对数据库进行操作的应用(例如,程序)的逻辑错误,并且将消耗大量的计算、存储和时间资源。此外,此类方案不是特定于具体问题的。
具体而言,根据此类方案,用于捕获SQL跟踪的工具被硬编码在数据库引擎的源代码中。跟踪是面向监控的,但是不是面向特定问题诊断的。而且,在典型的联机事务处理(OLTP)RDBMS系统中,经常存在大量的SQL封装体(package),并且每个SQL封装体包含数目众多的SQL语句。这些SQL语句在RDBMS地址空间中可并行执行。因此,跟踪所有SQL语句的执行代价很高,并且通用的跟踪策略对于特定的SQL语句而言未必有效。此外,根据现有技术的跟踪主要是针对审核、运行时、性能或持续时间的数据而进行的,内部数据结构和数据未被包括以用于诊断特定的SQL语句。
另一类现有技术的数据库诊断方案被称为转储(DUMP)或转存。一般而言,根据此类方案,在特定时刻或者特定条件被满足的情况下,与RDBMS地址空间相关联的存储设备(例如,RDBMS所操作的存储器)的全部或部分内容被拷贝和记录在另一储存设备中,以生成转储数据。由此,转储数据可以被认为是存储空间在该特定时刻或者该特定条件下的“现场快照”。继而,可以使用中央处理单元(CPU)寄存器的值作为入口,确定错误发生时客户环境中的应用访问状态和变量。
发明内容
然而,现有技术的基于转储的方案存在其自身的缺陷。首先,转储过程是有代价的,并且其时序关系未必与实际错误发生时严格对应一致。其次,转储只能体现特定时间点处的静态现场,无法反映目标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问题诊断可以更加准确、灵活和具有针对性。
附图说明
通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示出了根据本发明实施方式的用于控制数据库转储的方法100的流程图;
图2示出了根据本发明的另一实施方式的用于控制数据库转储的方法200的流程图;
图3示出了通过应用根据本发明实施方式的方法而获得的数据库转储的示例性结果的示意图;
图4示出了应用根据本发明实施方式的方法来处理一个SQL语句的过程的示意图;
图5示出了根据本发明实施方式的用于控制数据库转储的设备501的框图;
图6示出了根据本发明实施方式的用于控制数据库转储的系统600的框图;以及
图7示出了适于用来实现本发明实施方式的示例性计算系统700的框图。
具体实施方式
下面参考附图详细描述本发明的实施方式。如上所述并如下文详细讨论的,在本发明的一个实施方式中,可以按照一种选择性方式在SQL语句级别进行连续的、动态的转储,例如,针对内存的连续的、动态的转储。特别地,可以针对SQL语句执行过程中的任何特定步骤而执行转储。通过细化转储的粒度和级别,使得SQL问题诊断和分析变得更加准确和灵活。
首先参考图1,其示出了根据本发明实施方式的用于控制数据库转储的方法100的流程图。方法100开始之后,在步骤S102,针对数据库的SQL语句被执行。可以理解,该SQL语句可以旨在对数据库中存储的数据进行存储、访问、检索以及目前已知或将来开发的各种操作。
接下来,在步骤S104,响应于SQL语句被执行,确定与该SQL语句相关联的诊断标志的状态,即该诊断标志是否被设置为有效。根据本发明的实施方式,每个SQL语句都可以具有与之关联的标志,称作“诊断标志”,用于指示是否针对该SQL语句执行转储。具体地,当诊断标志的状态为有效时,指示应当执行针对该特定SQL语句的转储;反之,当诊断标志的状态为无效时,指示不执行针对该SQL语句的转储。
诊断标志可以采用现在已知或者将来开发的任何适当手段来实现。例如,诊断标志可以利用特定的比特位(bit)来实现。当该位的值为“1”时表示有效,为“0”时表示无效。又如,诊断标志也利用布尔变量来实现,当其值为“TRUE(真)”时表示有效,为“FALSE(假)”时表示无效。注意,上文描述的仅仅是此类标志的示例性实现方式,其他实现同样是可能的,本发明的范围在此方面不受限制。
在操作中,用户(例如,负责开发和/或维护数据库管理系统的有关人员)可以根据需要来创建和操作与所执行的SQL语句相关联的诊断标志。诊断标志的创建和设置例如可以在实验室环境中完成。例如,针对疑似导致数据库操作错误的SQL语句,用户可以利用特定的手段来创建此类标志并将其设置为有效。下面将详细讨论如何针对不同类型的SQL语句而创建和设置诊断标志。
SQL语句总体上可以分为两类:静态SQL语句和动态SQL语句。静态SQL语句是在运行时不会发生改变的SQL语句,因此可以被硬编码到应用中。与此相对,动态SQL语句是指在运行时才被构建的SQL语句。进一步,对于静态SQL语句,又分为两种情况:该静态SQL语句已被捆绑(bind)和尚未捆绑。已捆绑的一个或多个静态SQL语句可被包括在称为封装体(package)的结构中。
根据本发明的实施方式,对于动态SQL语句或者未经捆绑的静态SQL语句而言,如果用户希望对其进行诊断,则可以通过向该SQL语句添加定制的关键字而设置上述标志。例如,在本发明的某些实施方式中,可以向语句中添加例如“WITH DIAGNOSE”的定制关键字。作为示例,下面示出了添加有上述定制关键字的一个SQL语句:
SELECT*FROM T1,T2
WHERE T1.C1=T2.C1
WITH DIAGNOSE;
应当理解,在此给出的关键字以及添加关键字的位置仅仅是示例性的,其他任何定制的关键字以及添加方式都是可行的,本发明的范围在此方面不受限制。
相应地,对于添加有此类定制关键字的SQL语句,根据本发明实施方式的RDMBS系统在运行时将会把与该SQL语句相关联的诊断标志设为有效。特别地,根据本发明的某些实施方式,当SQL语句的实例被执行时,可以在运行该SQL语句实例的线程级别设置诊断标志。注意,这仅仅是示例性的,还可以通过任何其他适当的方式在运行时设置诊断标志,例如将与每个SQL语句相关联的诊断标志保存在可访问的存储位置和/或文件中。本发明的范围在此方面不受限制。
另一方面,对于已捆绑的静态SQL语句,可以通过定制的数据库命令而设置上述标志。例如,根据本发明的某些实施方式,此类定制命令的形式可以是:
SET DIAGNOSE PACKAGE(X)STMTNO(Y)
其中参数X是经捆绑而获得的包含所考虑SQL语句的封装体,而Y标识所考虑的SQL语句在该封装体中的位置。应当理解,在此给出的用于设置诊断标志的定制命令仅仅是示例性的,其他任何定制的数据库命令都可用于设置与已捆绑的静态SQL语句相关联的诊断标志。本发明的范围在此方面不受限制。
此类定制数据库命令例如可以向RDBMS中的命令控制器等实体发送。响应于接收到此类命令,命令控制器可以在包含已捆绑静态SQL语句的封装体中定位想要处理的SQL语句,并且例如为其加上特定的标签。由此,当该SQL语句被RDMBS系统执行时,可以根据所加的特定标签,在运行时将与该SQL语句关联的诊断标志的状态设置为有效。与上文类似,作为示例,诊断标志仍然可被设置在运行该SQL语句实例的线程级别。
应当理解,上文所描述的仅仅是示例性的。基于在此给出的教导和启示,本领域技术人员可以采用目前已知或者将来开发的任何适当方式,在运行时设置与特定SQL语句相关联的诊断标志的状态。本发明的范围在此方面不受限制。
返回图1,在步骤S104,如果与SQL语句相关联的诊断标志的状态被确定无效,则方法100结束。在这种情况下,SQL语句可被常规地执行,并未执行任何诊断动作。
另一方面,如果诊断标志的状态在步骤S104处被确定为有效,则方法100进行到步骤S106,在此执行针对该SQL语句的转储。具体地,可以对与该SQL语句相关联的存储空间(例如,存储器中的特定存储块)中的某些或全部内容进行拷贝和记录,从而生成转储数据,以供用户随后分析和处理。转储操作的具体实现可以按照目前已知或者将来开发的任何适当方式来进行,本发明的范围在此方面不受限制。在步骤S106完成之后,方法100随之结束。
应当理解,在本发明的一个实施方式中,由于诊断标志是特定于SQL语句的,因此转储是针对个体SQL语句执行的,而不是针对操作数据库的整个应用程序。而且,如下文详述的,对于转储的每个SQL语句,可以通过转储配置信息来控制拷贝和记录关联存储空间中的哪些内容,而并不一定对该空间中的全部内容进行转储。这些特征都显著区别于现有技术中的转储。以此方式,可以更加灵活、有效地诊断每个SQL语句的执行对系统造成的影响。
在方法100的某些优选实施方式中,转储不仅可以在SQL语句级别执行,而且还可以特定于SQL语句所包含的每个处理步骤,从而进一步降低粒度,提高转储操作的可控性和灵活性。下面将结合图2详细描述本发明的这种优选实施方式。
图2示出了根据本发明的另一实施方式的用于控制数据库转储的方法200的流程图。方法200可以作为上文参考图1描述的优选实施方式而被实现。通过下文描述将会理解,方法200将转储的粒度进一步降低到SQL语句所包含的每个处理步骤。
方法200开始之后,在步骤S202,执行SQL语句所包含的处理步骤(或简称“步骤”)。如本领域中已知的,为了实现一个SQL语句所描述的逻辑操作,需要执行一个或多个处理步骤。同样已知的是,一个SQL语句所包含的所有处理步骤通常是顺序执行的。因此,在该实施方式中,在给定的SQL语句初始执行时,在步骤S202处执行的通常是该语句所包含的第一个处理步骤。
接下来,在步骤S204,确定与当前SQL语句相关联的诊断标志的状态是否为有效,该诊断标志指示是否执行转储。可以理解,方法200中的步骤S204是上文参考图1描述的步骤S104的一种实施方式。也即,对诊断标志的状态的确定是响应于执行SQL语句所包含的处理步骤而完成的。
需要说明的是,对于当前SQL语句,在其任何以及每一个处理步骤执行时,所检查和确定的都是与该SQL语句相关联的同一标志的状态。换言之,尽管方法200可以针对SQL语句的每个处理步骤进行操作,但是与方法100类似,诊断标志仍然存在于SQL语句级别。与SQL语句相关联的诊断标志及其设置方法与上文参考图1描述的类似,在此不再赘述。
如果在步骤S204处确定与SQL语句相关联的诊断标志的状态为无效,表明无需执行针对该SQL语句的诊断。在这种情况下,方法200进行到步骤S212,在此确定是否有更多有待执行的处理步骤。如果存在后续待执行的处理步骤,则方法200返回步骤S202以继续执行。
另一方面,如果在步骤S204处确定与当前SQL语句相关联的诊断标志的状态为有效,则方法200继续进行到步骤S206。在步骤S206,访问与当前处理步骤相关联的转储配置信息。注意,与诊断标志特定于SQL语句不同,转储配置信息是特定于每个处理步骤的。换言之,尽管诊断标志存在于SQL语句级别,但是转储配置信息存在于处理步骤级别。根据本发明的某些实施方式,转储配置信息例如可以包含在相应的转储配置文件中。当然这仅仅是示例性的,转储配置信息也可以通过其他任何适当的方式实现。本发明的范围在此方面不受限制。
接下来,方法200进行到步骤S208,在此根据步骤S206处访问的转储配置信息,确定是否执行针对当前处理步骤的转储。如果结果为“是”,则方法200进行到步骤S210,以基于与当前处理步骤相关联的转储配置信息,执行针对当前处理步骤的转储。否则,如果在步骤S208处确定不执行处理步骤转储,则方法进行到步骤S212以判断是否还有更多待执行的处理步骤。
通过以上描述可以理解,在根据本发明实施方式的方法200中,与每个处理步骤相关联的转储配置信息可以指示是否执行针对该处理步骤的转储,以及转储的具体细节。由此,转储不但可以特定于SQL语句,而且还可以进一步特定于每个处理步骤。更具体地,在与SQL语句的诊断标志有效(由此指示执行针对该SQL语句的转储)的情况下,可以进一步通过转储配置信息来控制针对每个处理步骤是否执行转储以及转储的具体细节。以此方式,能够更好地捕获感兴趣的不同存储空间区域、片段或者数据,从而更为有效地诊断不同的SQL问题。
参考下面的表1,其示出了在本发明的某些实施方式中,分别与处理步骤1-N相关联的转储配置信息的示例。通过限定不同的转储配置信息,可以在SQL语句的任何处理步骤被执行时,捕获与该SQL语句相关的运行时存储空间的任意部分。应当理解,尽管在表1中与不同步骤相关联的转储配置信息被示为包含在一个表中,但这并非是必须的。
表1.与处理步骤相关联的转储配置信息示例
在表1所示的示例中,与每个步骤相关联的转储配置信息可以包含一个或多个“转储条目”。这里所称的“转储条目”是一种数据结构,其可被用于定义例如存储空间中的存储块及其内部结构的链表。作为示例,下面的表2中示出了与处理步骤相关联的转储条目ENTRY1和ENTRY2的示例。在表2所示的转储条目中,指定了当特定处理步骤被执行时,需要拷贝和记录的存储空间中的哪些特定存储块。在此示例中,这些存储块是利用结构BLOCK1、BLOCK2、BLOCK4来指定的。
表2.转储条目的示例
如表2所示,转储条目“ENTRY1”和“ENTRY2”是转储操作的起点或入口。根据本发明的某些实施方式,为了确定将要转储的存储块,转储条目中可以指定CPU寄存器,例如ENTRY1的参数VALUE中为“R4”,指示CPU寄存器R4。备选地,在另一些实施方式中,转储条目也可以直接指定存储空间中的绝对地址或偏移地址,例如ENTRY2中的OFFSET参数。
以转储条目ENTRY1为例,其参数VALUE为R4,并且参数STRUCTURE为“BLOCK1”,这表示:寄存器R4中存储有BLOCK1结构所限定的存储块的地址。进一步,在表2所示的示例性存储条目中,还包含有与BLOCK1结构相关的以下参数:LENGTH,指定存储块的长度;以及BLK1PTR1和BLK2PTR2,其是指针类型,分别指向另一块结构(在此例中,是另一BLOCK1结构和一个BLOCK2结构)。
参考图3,其中示出了与表2中的转储条目相对应的转储过程的示意图。在图3所示的示例中,转储开始于“ENTRY1”和“ENTRY2”。特别地,对于条目ENTRY1,转储操作访问寄存器R4,根据该寄存器中保存的值来确定BLOCK1在存储空间中的位置。继而,转储过程从该位置开始执行转储,即拷贝和记录存储地址中的内容和信息,直到长度达到参数LENGTH所指定的值(此例中为150字节)。此后,转储过程根据与当前BLOCK1结构相关的指针BLK1PTR1和BLK1PTR2,确定接下来将要处理的两个存储块(分别由BLOCK1和BLOCK2结构限定)。上述过程重复执行,直到针对转储条目链表中的所有存储块的转储完成。
应当理解,在上文表1中示出的转储配置信息和表2中示出的转储条目以及相应的描述仅仅是示例性的。实际上,根据在此给出的教导和启示,本领域技术人员可以通过任何适当的结构和方式来实现转储配置信息以及其中的转储条目。本发明的范围在此方面不受限制。
返回图2,在步骤S210处执行针对处理步骤的转储之后,方法200继续到步骤S212,在此判断当前SQL语句是否还具有更多待执行的处理步骤。如果有,则方法200返回步骤S202继续处理下一条目。
应当理解,尽管当前处理步骤的转储在图2中发生于下一处理步骤被执行之前,但这仅仅是为了说明和描述目的,并不是必须的或者限制性的。实际上,对一个处理步骤的转储可以在另一处理步骤被执行之前、期间或者之后进行。本发明的范围在此方面不受限制。
另一方面,如果已经处理了针对当前SQL语句的所有处理步骤,则方法200进行到步骤S214,在此将诊断标志重置为无效。如上文所述,在本发明的某些实施方式中,与SQL语句相关联的诊断标志可以存在于执行该SQL语句的实例的线程级别。一个线程可以运行一个或多个SQL语句。因此,当需要诊断的SQL语句的执行和转储完成之后,优选地可以对诊断标志进行重置,以避免影响在同一线程上运行的其他SQL语句。然而,应当理解的是,步骤S214是可选的。例如,当线程仅仅运行一个SQL语句,或者SQL语句的诊断标志不存在于线程级别时,步骤S214可被省略。又如,如果SQL语句所包含的最后一个处理步骤确定与该SQL语句相关联的诊断标志无效,此时显然无需对诊断标志进行重置。在这种情况下,步骤S214也可省略。
接下来,在某些实施方式中,方法200进行到步骤S216,在此清理转储期间产生的临时数据。应当理解,步骤S216也是可选的。执行S216仅仅是为了避免造成对系统资源的浪费。然而,在无需考虑资源压力和/或采用其他资源管理策略时,步骤S216可被省略。
方法200继而进行到步骤S218,以基于针对处理步骤的转储生成针对SQL语句的转储数据。根据本发明的实施方式,可以通过任何适当的方式对每个处理步骤的转储结果进行整合,以生成针对整个SQL语句的转储数据。注意,步骤S218是可选的。实际上,在某些情况下,用户可能仅仅关注SQL语句的特定步骤的转储。又如,用户有可能根据一个或多个特定步骤的转储,便可以诊断出相应的问题。在这些情况下,无需对分步结果进行整合以生成SQL级的转储结果,即步骤S218可被省略。
方法200在步骤S218完成之后结束。通过以上描述可以理解,根据本发明的优选实施方式,转储不仅可以特定于SQL语句,而且还可以特定于SQL语句的任何处理步骤(是否转储,以及如何转储)。由此,进一步增强了SQL问题诊断的针对性和灵活性。
下面参考图4,其示出了应用根据本发明实施方式的方法来处理一个SQL语句的过程的示意图。图4中所示的框图反映的是将上文参考图2描述的方法200应用于一个特定SQL语句时的情况。
首先,在框401,确定用户(例如,负责数据库问题诊断的专家或管理员)是否指示对一个SQL语句进行诊断。如上所述,当用户期望对SQL语句进行诊断时,他/她可以通过以下方式来做出指示:向该SQL语句添加定制关键字(对于动态SQL语句或者未经捆绑的静态SQL语句),或者发出定制的数据库命令(对于已捆绑的静态SQL语句)。由此,在框401,可以确定SQL语句是否具有定制的关键字,或者是否接收到了定制的数据库命令。
如果确定对该SQL语句进行转储,则在框402处,将与该SQL语句相关联的诊断标志的状态设置为有效。相应地,转储配置信息被加载,以获得与当前SQL语句的每个处理步骤相关联的配置信息,如框403所示。
在框404,执行SQL语句的第一个处理步骤(即,处理步骤1)。作为响应,在框405,确定与该SQL语句相关联的诊断标志的状态是否为有效。如果诊断标志的状态为无效,则继续执行下一处理步骤(处理步骤2)。如果诊断标志的状态为有效,则访问处理步骤1的转储配置信息,并且在框406处,根据该转储配置信息确定是否针对处理步骤1执行转储。
如果根据转储配置信息确定不执行转储,则继续执行下一处理步骤。反之,如果在框406处确定执行针对处理步骤1的转储,则在框407,根据步骤1的转储配置信息执行转储。作为结果,获得针对步骤1的转储数据,如框408所示。继而,下一待执行的处理步骤被类似地操作。
在针对SQL语句的所有步骤执行类似操作之后,可选地,在框409处将诊断标志的状态重置为无效,并且在框410处清理转储期间产生的临时数据。此外,可选地,可以将针对各个步骤1-N的转储数据进行综合,以获得针对SQL语句的转储数据,如框411所示。
参考图5,其示出了根据本发明实施方式的用于控制数据库转储的设备501的框图。可以理解,在本发明的某些实施方式中,设备501可以作为执行上文参考图1和图2描述的方法100和方法200的实体。
如图5所示,根据本发明的实施方式,设备500可以包括:标志确定装置502,其可被配置为用于响应于针对数据库的结构化查询语言SQL语句被执行,确定与该SQL语句相关联的诊断标志的状态,该诊断标志指示是否执行转储;以及转储执行装置504,其可被配置为用于响应于该诊断标志的状态被确定为有效,执行针对该SQL语句的转储。
优选地,根据本发明的某些实施方式,标志确定装置502可进一步包括:步骤级确定装置5022,其可被配置为用于响应于执行该SQL语句所包含的处理步骤而确定该诊断标志的状态。在此类实施方式中,转储执行装置504可进一步包括:步骤级配置访问装置5042,其可被配置为用于访问与该处理步骤相关联的转储配置信息;以及步骤级转储执行装置5044,其可被配置为响应于该转储配置信息指示执行转储、根据该转储配置信息执行针对该处理步骤的转储。
根据本发明的可选实施方式,设备501还可包括转储数据生成装置506,其可被配置为用于基于针对处理步骤的转储而生成针对该SQL语句的转储数据。
根据本发明的可选实施方式,设备501还可包括标志重置装置508,其可被配置为用于响应于针对该SQL语句的转储完成而将诊断标志重置为无效。
此外,根据本发明的可选实施方式,设备501还可包括临时数据清理装置,其可被配置为用于响应于针对该SQL语句的转储完成而清理转储期间产生的临时数据。
应当理解,设备501中记载的所有装置及其子装置对应于上文参考图1描述的方法100和参考图2描述的方法200中的各个步骤。由此,上文针对方法100和方法200描述的所有特征和操作同样适用于设备401,在此不再赘述。
还应当理解,设备501可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。例如,在某些实施方式中,设备501可以利用软件和/或固件模块来实现。备选地或附加地,设备501也可以利用硬件模块来实现。例如,设备501可以实现为集成电路(IC)芯片或专用集成电路(ASIC)。设备501也可以实现为片上系统(SOC)。现在已知或者将来开发的其他方式也是可行的,本发明的范围在此方面不受限制。
现在参考图6,其示出了根据本发明实施方式的用于控制数据库转储的系统600的框图。如图所示,根据本发明的实施方式,系统600可以包括标志设置设备602,其可被配置为用于设置与结构化查询语言SQL语句相关联的诊断标志,该诊断标志指示是否执行转储。根据本发明的实施方式,标志设置设备602可供例如数据库开发和维护人员使用,以便针对需要诊断的SQL语句及其处理步骤设置诊断标志。
系统600还包括SQL执行设备606,其可被配置为用于执行SQL语句。此外,系统600还包括转储控制设备601,其可被配置为用于:响应于SQL执行设备606执行SQL语句,根据与该SQL语句相关联的诊断标志来控制该SQL语句的转储。特别地,根据本发明的实施方式,转储控制设备601包含或者对应于上文参考图5描述的设备501。
此外,如上文所述,对于不同类型的SQL语句,可能需要采取不同的策略来为其创建和设置诊断标志。为此,根据本发明的某些实施方式,标志设置设备602可进一步包括第一设置装置6022,其可被配置为用于:响应于所述SQL语句是已捆绑的静态SQL语句,生成定制的数据库命令,其中定制数据库命令例如采用上文参考图1描述的形式。
相应地,在此类实施方式中,系统600进一步包括命令控制设备604,其可被配置为用于响应于此类定制数据库命令,通过操纵包含静态SQL语句的封装体而设置所述诊断标志。例如,根据本发明的某些实施方式,响应于定制数据库命令,命令控制设备604可以在静态SQL封装体中定位需要诊断的SQL语句,并且例如为该静态SQL语句加上特定的标签。由此,在该SQL语句被执行时,可以根据该特定的标签来设置相关联的诊断标志的状态。注意,这仅仅是示例性的,其他实施方式同样是可行的,本发明的范围在此方面不受限制。
此外,为了处理动态SQL语句或者尚未捆绑的静态SQL语句,标志设置设备602可进一步包括第二设置装置6024,其可被配置为用于:响应于SQL语句是动态SQL语句或者未捆绑的静态SQL语句,通过向该SQL语句添加定制的关键字来设置所述诊断标志。相应地,在该SQL语句被执行时,可以根据该关键字来设置诊断标志的状态。关于定制关键字的示例形式和使用方法已在上文描述,在此不再赘述。
可以理解,根据本发明的实施方式,在上文参考图6描述的系统600中,标志设置装置602可以由例如开发和/或维护人员之类的专家用户使用,以诊断特定的SQL语句;而命令控制设备604、SQL执行设备606以及转储控制设备601可被实现为数据库管理系统的部分。
图7示出了适于用来实现本发明实施方式的示例性计算系统700的框图。如所示,计算机系统700可以包括:CPU(中央处理单元)701、RAM(随机存取存储器)702、ROM(只读存储器)703、系统总线704、硬盘控制器705、键盘控制器706、串行接口控制器707、并行接口控制器708、显示控制器709、硬盘710、键盘711、串行外部设备712、并行外部设备713和显示器714。在这些设备中,与系统总线704耦合的有CPU 701、RAM 702、ROM 703、硬盘控制器705、键盘控制器706、串行控制器707、并行控制器708和显示控制器709。硬盘710与硬盘控制器705耦合,键盘711与键盘控制器706耦合,串行外部设备712与串行接口控制器707耦合,并行外部设备713与并行接口控制器708耦合,以及显示器714与显示控制器709耦合。应当理解,图7所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
特别地,除硬件实施方式之外,本发明的实施方式可以通过计算机程序产品的形式实现。例如,参考图1描述的方法100以及参考图2描述的方法200均可通过计算机程序产品来实现。该计算机程序产品可以存储在例如图7所示的RAM 704、ROM 704、硬盘710和/或任何适当的存储介质中,或者通过网络从适当的位置下载到计算机系统700上。计算机程序产品可以包括计算机代码部分,其包括可由适当的处理设备(例如,图7中示出的CPU 701)执行的程序指令。所述程序指令至少可以包括:用于响应于针对数据库的结构化查询语言SQL语句被执行而确定与所述SQL语句相关联的诊断标志的状态的指令,所述诊断标志指示是否执行转储;以及响应于所述诊断标志的状态被确定为有效而执行针对所述SQL语句的转储的指令。
上文已经通过本发明的若干具体实施方式而阐释了本发明的思想和原理。通过上文描述可知,利用本发明的实施方式,可以按照选择性的方式在SQL语句级别实现连续的、动态的转储。特别地,可以针对SQL语句的执行步骤而实现转储,从而进一步细化转储的粒度和级别。以此方式,可以更加准确、灵活和有针对性地诊断各类SQL问题。
注意,在上文描述的流程图和框图中,每个框可以代表模块、程序段或者代码的部分,这些模块、程序段、或代码的部分包含一个或多个用于实现规定的逻辑功能的可执行指令。还应注意,在某些备选实施方式中,框中所标注的功能也可以按照不同于图中所示的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这取决于所涉及的具体功能。还应注意,框图和/或流程图中的每个框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
根据本发明实施方式的方法和装置可以采取完全硬件实施方式、完全软件实施方式或既包含硬件组件又包含软件组件的实施方式的形式。在优选实施方式中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。
而且,本发明还可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,这些介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于描述目的,计算机可用或计算机可读机制可以是任何有形的装置,其可以包含、存储、通信、传播或传输程序以由指令执行系统、装置或设备使用或与其结合使用。
介质可以是电的、磁的、光的、电磁的、红外线的、或半导体的系统(或装置或器件)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括紧凑盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
适合与存储/或执行程序代码的数据处理系统将包括至少一个处理器,其直接地或通过系统总线间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间所利用的本地存储器、大容量存储器、以及提供至少一部分程序代码的临时存储以便减少执行期间从大容量存储器必须取回代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等等)可以直接地或通过中间I/O控制器耦合到系统。
网络适配器也可以耦合到系统,以使得数据处理系统能够通过中间的私有或公共网络而耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡仅仅是当前可用的网络适配器类型的几个例子。
尽管已在上文描述了本发明的若干实施方式,但是本领域技术人员应当理解,这些描述仅仅是示例性和说明性的。根据说明书的教导和启示,在不脱离本发明真实精神的情况下,可以对本发明的实施方式进行各种修改和变更。因此,说明书中记载的特征不应被认为是限制性的。本发明的范围仅由所附权利要求书来限定。
Claims (19)
1.一种用于控制数据库的转储的方法,包括:
响应于针对数据库的结构化查询语言SQL语句被执行,确定与所述SQL语句相关联的诊断标志的状态,所述诊断标志指示是否执行转储;以及
响应于所述诊断标志的状态被确定为有效,执行针对所述SQL语句的转储。
2.如权利要求1所述的方法,其中确定与所述SQL语句相关联的诊断标志的状态包括:
响应于执行所述SQL语句所包含的处理步骤,确定所述诊断标志的状态;
以及其中执行针对所述SQL语句的转储包括:
访问与所述处理步骤相关联的转储配置信息;以及
响应于所述转储配置信息指示执行转储,基于所述转储配置信息执行针对所述处理步骤的转储。
3.如权利要求2所述的方法,进一步包括:
基于针对处理步骤的转储,生成针对所述SQL语句的转储数据。
4.如权利要求1-3任一项所述的方法,进一步包括:
响应于针对所述SQL语句的转储完成,将所述诊断标志重置为无效。
5.如权利要求1-3任一项所述的方法,进一步包括:
响应于针对所述SQL语句的转储完成,清理转储期间产生的临时数据。
6.如权利要求1-3任一项所述的方法,其中所述诊断标志在运行所述SQL语句的实例的线程级别被设置。
7.如权利要求1-3任一项所述的方法,其中如果所述SQL语句是动态SQL语句或者未捆绑的静态SQL语句,所述诊断标志是通过向所述SQL语句添加定制的关键字而设置的。
8.如权利要求1-3任一项所述的方法,其中如果所述SQL语句是已捆绑的静态SQL语句,所述诊断标志是通过定制的数据库命令而设置的。
9.一种用于控制数据库的转储的设备,包括:
标志确定装置,被配置为用于响应于针对数据库的结构化查询语言SQL语句被执行,确定与所述SQL语句相关联的诊断标志的状态,所述诊断标志指示是否执行转储;以及
转储执行装置,被配置为用于响应于所述诊断标志的状态被确定为有效,执行针对所述SQL语句的转储。
10.如权利要求9所述的设备,其中所述标志确定装置进一步包括:
步骤级确定装置,被配置为用于响应于执行所述SQL语句所包含的处理步骤而确定所述诊断标志的状态;
以及其中所述转储执行装置进一步包括:
步骤级配置访问装置,被配置为用于访问与所述处理步骤相关联的转储配置信息;以及
步骤级转储执行装置,被配置为响应于所述转储配置信息指示执行转储、根据所述转储配置信息执行针对所述处理步骤的转储。
11.如权利要求9所述的设备,进一步包括:
转储数据生成装置,被配置为用于基于针对处理步骤的转储而生成针对所述SQL语句的转储数据。
12.如权利要求9-11任一项所述的设备,进一步包括:
标志重置装置,被配置为用于响应于针对所述SQL语句的转储完成而将所述诊断标志重置为无效。
13.如权利要求9-11任一项所述的设备,进一步包括:
临时数据清理装置,被配置为用于响应于针对所述SQL语句的转储完成而清理转储期间产生的临时数据。
14.如权利要求9-11任一项所述的设备,其中所述诊断标志在运行所述SQL语句的实例的线程级别被设置。
15.如权利要求9-11任一项所述的设备,其中如果所述SQL语句是动态SQL语句或者未捆绑的静态SQL语句,所述诊断标志是通过向所述SQL语句添加定制的关键字而设置的。
16.如权利要求9-11任一项所述的设备,其中如果所述SQL语句是已捆绑的静态SQL语句,所述诊断标志是通过定制的数据库命令而设置的。
17.一种用于控制数据库的转储的系统,包括:
标志设置设备,被配置为用于设置与结构化查询语言SQL语句相关联的诊断标志,所述诊断标志指示是否执行转储;
SQL执行设备,被配置为用于执行所述SQL语句;以及
转储控制设备,被配置为用于响应于所述SQL执行设备执行所述SQL语句,根据与所述SQL语句相关联的诊断标志来控制所述SQL语句的转储,其中所述转储控制设备包含如权利要求9-14任一项所述的设备。
18.如权利要求17所述的系统,其中所述标志设置设备进一步包括:
第一设置装置,被配置为用于响应于所述SQL语句是已捆绑的静态SQL语句而生成定制的数据库命令;
并且其中所述系统进一步包括:
命令控制设备,被配置为用于响应于所述定制的数据库命令,通过操纵包含所述静态SQL语句的封装体而设置所述诊断标志。
19.如权利要求17所述的系统,其中所述标志设置设备进一步包括:
第二设置装置,被配置为用于响应于所述SQL语句是动态SQL语句或者未捆绑的静态SQL语句,通过向所述SQL语句添加定制的关键字来设置所述诊断标志。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100516420A CN102651010A (zh) | 2011-02-28 | 2011-02-28 | 用于数据库转储的方法、设备和系统 |
US13/367,689 US8935200B2 (en) | 2011-02-28 | 2012-02-07 | Dynamic database dump |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100516420A CN102651010A (zh) | 2011-02-28 | 2011-02-28 | 用于数据库转储的方法、设备和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102651010A true CN102651010A (zh) | 2012-08-29 |
Family
ID=46693018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100516420A Pending CN102651010A (zh) | 2011-02-28 | 2011-02-28 | 用于数据库转储的方法、设备和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8935200B2 (zh) |
CN (1) | CN102651010A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446172A (zh) * | 2016-09-27 | 2017-02-22 | 浪潮软件集团有限公司 | 一种用于大数据比对的数据转储方法 |
CN107766552A (zh) * | 2017-11-01 | 2018-03-06 | 搜易贷(北京)金融信息服务有限公司 | 一种mysql自动上线方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107818157B (zh) * | 2017-10-31 | 2021-06-29 | 北京酷我科技有限公司 | 一种基于fmdb的sql语句封装方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6374267B1 (en) * | 1999-08-13 | 2002-04-16 | Unisys Corporation | Database backup system and method utilizing numerically identified files for incremental dumping |
CN1877569A (zh) * | 2005-06-06 | 2006-12-13 | 华为技术有限公司 | 通用数据库自动转储方法及系统 |
US20090172051A1 (en) * | 2007-12-31 | 2009-07-02 | Bill Huffman | Online incremental database dump |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155426B2 (en) | 2001-09-20 | 2006-12-26 | International Business Machines Corporation | SQL debugging using stored procedures |
US7047231B2 (en) | 2002-03-01 | 2006-05-16 | Software Engineering Gmbh | Getpage-workload based index optimizer |
KR20040039648A (ko) | 2002-11-04 | 2004-05-12 | (주)키씨 | 데이터베이스 성능 관리 기법 |
US20070156644A1 (en) | 2006-01-05 | 2007-07-05 | Microsoft Corporation | SQL injection detector |
KR100798577B1 (ko) | 2007-06-29 | 2008-01-28 | 주식회사 엘지씨엔에스 | 데이터품질문제 분석시스템 및 데이터품질문제 분석방법 |
US20090094229A1 (en) | 2007-10-03 | 2009-04-09 | Mark Warne Ferrel | Method and apparatus for exploiting 'trace' function to support database integration |
-
2011
- 2011-02-28 CN CN2011100516420A patent/CN102651010A/zh active Pending
-
2012
- 2012-02-07 US US13/367,689 patent/US8935200B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6374267B1 (en) * | 1999-08-13 | 2002-04-16 | Unisys Corporation | Database backup system and method utilizing numerically identified files for incremental dumping |
CN1877569A (zh) * | 2005-06-06 | 2006-12-13 | 华为技术有限公司 | 通用数据库自动转储方法及系统 |
US20090172051A1 (en) * | 2007-12-31 | 2009-07-02 | Bill Huffman | Online incremental database dump |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446172A (zh) * | 2016-09-27 | 2017-02-22 | 浪潮软件集团有限公司 | 一种用于大数据比对的数据转储方法 |
CN107766552A (zh) * | 2017-11-01 | 2018-03-06 | 搜易贷(北京)金融信息服务有限公司 | 一种mysql自动上线方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120221512A1 (en) | 2012-08-30 |
US8935200B2 (en) | 2015-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5991761A (en) | Method of reorganizing a data entry database | |
US9298924B2 (en) | Fixing security vulnerability in a source code | |
US8661291B2 (en) | Diagnosing a fault incident in a data center | |
CN104636409B (zh) | 促进搜索结果的显示的方法、设备和产生搜索结果的方法 | |
US20050154740A1 (en) | Method and system for a self-healing query access plan | |
JP5443615B2 (ja) | モデル駆動手法を使用する柔軟性のあるデータ・アーカイブのための方法、並びにそのシステム、及びコンピュータ・プログラム | |
CN106030533A (zh) | 通过拆分过程执行自动重试事务 | |
JP5791149B2 (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
JP6573452B2 (ja) | 階層参照データにおけるコンフリクトを解消する方法およびシステム | |
US9195730B2 (en) | Verifying correctness of a database system via extended access paths | |
Delgado‐Pérez et al. | Performance mutation testing | |
CN106227769B (zh) | 数据存储方法及装置 | |
US9535687B2 (en) | Audited builds based upon separate class dependency records | |
CN105373536B (zh) | 一种实现dao接口的方法及装置 | |
US9442862B2 (en) | Polymorph table with shared columns | |
US20230120592A1 (en) | Query Generation and Processing System | |
CN102651010A (zh) | 用于数据库转储的方法、设备和系统 | |
US8332335B2 (en) | Systems and methods for decision pattern identification and application | |
US20150378799A1 (en) | Automatic memory leak detection | |
US20160210553A1 (en) | Predicting the Impact of Change on Events Detected in Application Logic | |
US20230124100A1 (en) | Low-Latency Data Management And Query Processing Cross-Optimizations | |
CN102682038A (zh) | 一种数据库变更方法以及装置 | |
JP5546909B2 (ja) | データ処理システム及び方法及びプログラム | |
US11100131B2 (en) | Simulation of a synchronization of records | |
US20240220693A1 (en) | Making Circuitry Having An Attribute |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120829 |