亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于數(shù)據(jù)庫轉(zhuǎn)儲的方法、設備和系統(tǒng)的制作方法

文檔序號:6355457閱讀:351來源:國知局
專利名稱:用于數(shù)據(jù)庫轉(zhuǎn)儲的方法、設備和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明的實施方式總體上涉及數(shù)據(jù)庫領(lǐng)域,并且更具體地,涉及用于數(shù)據(jù)庫轉(zhuǎn)儲的方法、設備和系統(tǒng)。
背景技術(shù)
如本領(lǐng)域已知的,數(shù)據(jù)庫在現(xiàn)代信息技術(shù)中發(fā)揮著重要作用。例如,作為數(shù)據(jù)庫的重要類型之一,關(guān)系數(shù)據(jù)庫系統(tǒng)被廣泛地應用于存儲和檢索各類信息。通常,存儲在關(guān)系數(shù) 據(jù)庫中的數(shù)據(jù)可以使用結(jié)構(gòu)化查詢語言(SQL)來進行操作。SQL是ー種針對數(shù)據(jù)庫的查詢和操作而設計的結(jié)構(gòu)化描述語言。SQL語句僅描述數(shù)據(jù)檢索的高層準則,而不涉及數(shù)據(jù)庫系統(tǒng)的具體細節(jié)。SQL的這ー抽象特點將開發(fā)和維護人員從數(shù)據(jù)庫操作的底層操作(例如,數(shù)據(jù)的位置、訪問方法,等等)中解放出來,極大地提高了開發(fā)和維護的效率和方便程度。然而,另一方面,為了支持這種抽象,用于實現(xiàn)具體底層操作的數(shù)據(jù)庫管理系統(tǒng)(例如,關(guān)系數(shù)據(jù)庫管理系統(tǒng)RDBMS)需要在功能上具有較高的復雜性。在數(shù)據(jù)庫管理系統(tǒng)的開發(fā)、調(diào)試和維護中,相關(guān)人員往往需要基于數(shù)據(jù)庫操作過程中出現(xiàn)的SQL錯誤,來診斷數(shù)據(jù)庫管理系統(tǒng)中存在的問題以及導致該問題的根源,從而能夠采取必要的修改和/或維護措施。然而,隨著關(guān)系數(shù)據(jù)庫管理系統(tǒng)的復雜性不斷増加,對SQL問題的診斷越來越困難。特別地,如果數(shù)據(jù)庫操作中的SQL錯誤發(fā)生在客戶方,并且這種錯誤無法在實驗室環(huán)境中重現(xiàn),則開發(fā)和維護人員很難準確地診斷出錯誤發(fā)生的原因。不幸的是,實踐中的情況往往如此。這是因為在實驗室環(huán)境中,通常難以嚴格按照實際錯誤發(fā)生時的客戶上下文來請求數(shù)據(jù)和/或表,從而也就無法重現(xiàn)問題發(fā)生時的真實情境。為了能夠診斷此類不可重現(xiàn)的SQL問題,現(xiàn)有技術(shù)中已經(jīng)提出了若干解決方案。例如,在某些現(xiàn)有技術(shù)的方案中,對數(shù)據(jù)庫問題的診斷依賴于日志和跟蹤技木。然而,此類方案無法反映對數(shù)據(jù)庫進行操作的應用(例如,程序)的邏輯錯誤,并且將消耗大量的計算、存儲和時間資源。此外,此類方案不是特定于具體問題的。具體而言,根據(jù)此類方案,用于捕獲SQL跟蹤的工具被硬編碼在數(shù)據(jù)庫引擎的源代碼中。跟蹤是面向監(jiān)控的,但是不是面向特定問題診斷的。而且,在典型的聯(lián)機事務處理(OLTP)RDBMS系統(tǒng)中,經(jīng)常存在大量的SQL封裝體(package),并且每個SQL封裝體包含數(shù)目眾多的SQL語句。這些SQL語句在RDBMS地址空間中可并行執(zhí)行。因此,跟蹤所有SQL語句的執(zhí)行代價很高,并且通用的跟蹤策略對于特定的SQL語句而言未必有效。此外,根據(jù)現(xiàn)有技術(shù)的跟蹤主要是針對審核、運行時、性能或持續(xù)時間的數(shù)據(jù)而進行的,內(nèi)部數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)未被包括以用于診斷特定的SQL語句。另ー類現(xiàn)有技術(shù)的數(shù)據(jù)庫診斷方案被稱為轉(zhuǎn)儲(DUMP)或轉(zhuǎn)存。一般而言,根據(jù)此類方案,在特定時刻或者特定條件被滿足的情況下,與RDBMS地址空間相關(guān)聯(lián)的存儲設備(例如,RDBMS所操作的存儲器)的全部或部分內(nèi)容被拷貝和記錄在另ー儲存設備中,以生成轉(zhuǎn)儲數(shù)據(jù)。由此,轉(zhuǎn)儲數(shù)據(jù)可以被認為是存儲空間在該特定時刻或者該特定條件下的“現(xiàn)場快照”。繼而,可以使用中央處理單元(CPU)寄存器的值作為入口,確定錯誤發(fā)生時客戶環(huán)境中的應用訪問狀態(tài)和變量。

發(fā)明內(nèi)容
然而,現(xiàn)有技術(shù)的基于轉(zhuǎn)儲的方案存在其自身的缺陷。首先,轉(zhuǎn)儲過程是有代價的,并且其時序關(guān)系未必與實際錯誤發(fā)生時嚴格對應一致。其次,轉(zhuǎn)儲只能體現(xiàn)特定時間點處的靜態(tài)現(xiàn)場,無法反映目標SQL語句是如何被轉(zhuǎn)換和執(zhí)行的歷史和演變過程。更為重要的是,現(xiàn)有技術(shù)的轉(zhuǎn)儲,是針對整個應用程序或其部分而執(zhí)行的;而且現(xiàn)有技術(shù)的轉(zhuǎn)儲,需要拷貝和記錄存儲空間中的全部內(nèi)容。換言之,現(xiàn)有的轉(zhuǎn)儲技術(shù)往往創(chuàng)建整個存儲空間的現(xiàn)場快照。這不僅將消耗大量的資源,而且有時無法準確查明問題的根源。例如,基于整個存儲空間的轉(zhuǎn)儲數(shù)據(jù),有時并不能確定特定的SQL語句對整個數(shù)據(jù)處理造成的影響。
鑒于以上問題,為了對SQL問題進行更為有效和準確的診斷,本領(lǐng)域需要ー種能夠以選擇性方式在SQL語句級別進行連續(xù)動態(tài)轉(zhuǎn)儲的方法、設備和系統(tǒng)。在本發(fā)明的ー個方面,提供一種用于控制數(shù)據(jù)庫的轉(zhuǎn)儲的方法。該方法包括響應于針對數(shù)據(jù)庫的結(jié)構(gòu)化查詢語言SQL語句被執(zhí)行,確定與所述SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài),所述診斷標志指示是否執(zhí)行轉(zhuǎn)儲;以及響應于所述診斷標志的狀態(tài)被確定為有效,執(zhí)行針對所述SQL語句的轉(zhuǎn)儲。根據(jù)本發(fā)明的某些實施方式,確定與所述SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài)包括響應于執(zhí)行所述SQL語句所包含的處理步驟,確定所述診斷標志的狀態(tài)。此時,執(zhí)行針對所述SQL語句的轉(zhuǎn)儲包括訪問與所述處理步驟相關(guān)聯(lián)的轉(zhuǎn)儲配置信息;以及響應于所述轉(zhuǎn)儲配置信息指示執(zhí)行轉(zhuǎn)儲,基于所述轉(zhuǎn)儲配置信息執(zhí)行針對所述處理步驟的轉(zhuǎn)儲。根據(jù)本發(fā)明的此類實施方式,該方法進ー步包括基于針對處理步驟的轉(zhuǎn)儲,生成針對所述SQL語句的轉(zhuǎn)儲數(shù)據(jù)。根據(jù)本發(fā)明的某些實施方式,該方法進ー步包括響應于針對所述SQL語句的轉(zhuǎn)儲完成,將所述診斷標志重置為無效。備選地或附加地,該方法進ー步包括響應于針對所述SQL語句的轉(zhuǎn)儲完成,清理轉(zhuǎn)儲期間產(chǎn)生的臨時數(shù)據(jù)。根據(jù)本發(fā)明的某些實施方式,所述診斷標志在運行所述SQL語句的實例的線程級別被設置。而且,根據(jù)本發(fā)明的某些實施方式,如果所述SQL語句是動態(tài)SQL語句或者未捆綁的靜態(tài)SQL語句,所述診斷標志是通過向所述SQL語句添加定制的關(guān)鍵字而設置的。此夕卜,根據(jù)本發(fā)明的某些實施方式,如果所述SQL語句是已捆綁的靜態(tài)SQL語句,所述診斷標志是通過定制的數(shù)據(jù)庫命令而設置的。在本發(fā)明的另一方面,提供一種用于控制數(shù)據(jù)庫的轉(zhuǎn)儲的設備。該設備包括標志確定裝置,被配置為用于響應于針對數(shù)據(jù)庫的結(jié)構(gòu)化查詢語言SQL語句被執(zhí)行,確定與所述SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài),所述診斷標志指示是否執(zhí)行轉(zhuǎn)儲;以及轉(zhuǎn)儲執(zhí)行裝置,被配置為用于響應于所述診斷標志的狀態(tài)被確定為有效,執(zhí)行針對所述SQL語句的轉(zhuǎn)儲。在本發(fā)明的又一方面,提供ー種用于控制數(shù)據(jù)庫的轉(zhuǎn)儲的系統(tǒng),包括標志設置設備,被配置為用于設置與結(jié)構(gòu)化查詢語言SQL語句相關(guān)聯(lián)的診斷標志,所述診斷標志指示是否執(zhí)行轉(zhuǎn)儲;SQL執(zhí)行設備,被配置為用于執(zhí)行所述SQL語句;以及轉(zhuǎn)儲控制設備,被配置為用于響應于所述SQL執(zhí)行設備執(zhí)行所述SQL語句,根據(jù)與所述SQL語句相關(guān)聯(lián)的診斷標志來控制所述SQL語句的轉(zhuǎn)儲,其中所述轉(zhuǎn)儲控制設備包含如上文所述的設備。利用本發(fā)明的實施方式,可以按照一種選擇性的可配置方式,在SQL語句級別捕獲連續(xù)的、動態(tài)的轉(zhuǎn)儲數(shù)據(jù)。換言之,不同現(xiàn)有技術(shù)中針對整個存儲空間的轉(zhuǎn)儲,本發(fā)明的實施方式允許在單個SQL語句級別執(zhí)行轉(zhuǎn)儲,并且對存儲空間中的哪些部分(存儲塊)進行轉(zhuǎn)儲是可配置的。這種選擇性的轉(zhuǎn)儲可以隨同SQL語句的生命周期而被執(zhí)行。特別地,可以針對SQL語句的任何特定步驟而執(zhí)行轉(zhuǎn)儲,并且可以基于這些步驟級別轉(zhuǎn)儲的結(jié)果生成SQL語句級別的轉(zhuǎn)儲數(shù)據(jù)以供診斷和分析。這進ー步細化了轉(zhuǎn)儲的粒度和級別。由此,數(shù)據(jù)庫管理系統(tǒng)的SQL問 題診斷可以更加準確、靈活和具有針對性。


通過參考附圖閱讀下文的詳細描述,本發(fā)明實施方式的上述以及其他目的、特征和優(yōu)點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實施方式,其中圖I示出了根據(jù)本發(fā)明實施方式的用于控制數(shù)據(jù)庫轉(zhuǎn)儲的方法100的流程圖;圖2示出了根據(jù)本發(fā)明的另ー實施方式的用于控制數(shù)據(jù)庫轉(zhuǎn)儲的方法200的流程圖;圖3示出了通過應用根據(jù)本發(fā)明實施方式的方法而獲得的數(shù)據(jù)庫轉(zhuǎn)儲的示例性結(jié)果的不意圖;圖4示出了應用根據(jù)本發(fā)明實施方式的方法來處理ー個SQL語句的過程的示意圖;圖5示出了根據(jù)本發(fā)明實施方式的用于控制數(shù)據(jù)庫轉(zhuǎn)儲的設備501的框圖;圖6示出了根據(jù)本發(fā)明實施方式的用于控制數(shù)據(jù)庫轉(zhuǎn)儲的系統(tǒng)600的框圖;以及圖7示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算系統(tǒng)700的框圖。
具體實施例方式下面參考附圖詳細描述本發(fā)明的實施方式。如上所述并如下文詳細討論的,在本發(fā)明的一個實施方式中,可以按照一種選擇性方式在SQL語句級別進行連續(xù)的、動態(tài)的轉(zhuǎn)儲,例如,針對內(nèi)存的連續(xù)的、動態(tài)的轉(zhuǎn)儲。特別地,可以針對SQL語句執(zhí)行過程中的任何特定步驟而執(zhí)行轉(zhuǎn)儲。通過細化轉(zhuǎn)儲的粒度和級別,使得SQL問題診斷和分析變得更加準確和靈活。首先參考圖I,其示出了根據(jù)本發(fā)明實施方式的用于控制數(shù)據(jù)庫轉(zhuǎn)儲的方法100的流程圖。方法100開始之后,在步驟S102,針對數(shù)據(jù)庫的SQL語句被執(zhí)行。可以理解,該SQL語句可以g在對數(shù)據(jù)庫中存儲的數(shù)據(jù)進行存儲、訪問、檢索以及目前已知或?qū)黹_發(fā)的各種操作。接下來,在步驟S104,響應于SQL語句被執(zhí)行,確定與該SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài),即該診斷標志是否被設置為有效。根據(jù)本發(fā)明的實施方式,每個SQL語句都可以具有與之關(guān)聯(lián)的標志,稱作“診斷標志”,用于指示是否針對該SQL語句執(zhí)行轉(zhuǎn)儲。具體地,當診斷標志的狀態(tài)為有效時,指示應當執(zhí)行針對該特定SQL語句的轉(zhuǎn)儲;反之,當診斷標志的狀態(tài)為無效時,指示不執(zhí)行針對該SQL語句的轉(zhuǎn)儲。診斷標志可以采用現(xiàn)在已知或者將來開發(fā)的任何適當手段來實現(xiàn)。例如,診斷標志可以利用特定的比特位(bit)來實現(xiàn)。當該位的值為“I”時表示有效,為“O”時表示無效。又如,診斷標志也利用布爾變量來實現(xiàn),當其值為“TRUE (真)”時表示有效,為“FALSE (假)”時表示無效。注意,上文描述的僅僅是此類標志的示例性實現(xiàn)方式,其他實現(xiàn)同樣是可能的,本發(fā)明的范圍在此方面不受限制。在操作中,用戶(例如,負責開發(fā)和/或維護數(shù)據(jù)庫管理系統(tǒng)的有關(guān)人員)可以根據(jù)需要來創(chuàng)建和操作與所執(zhí)行的SQL語句相關(guān)聯(lián)的診斷標志。診斷標志的創(chuàng)建和設置例如可以在實驗室環(huán)境中完成。例如,針對疑似導致數(shù)據(jù)庫操作錯誤的SQL語句,用戶可以利用特定的手段來創(chuàng)建此類標志并將其設置為有效。下面將詳細討論如何針對不同類型的SQL語句而創(chuàng)建和設置診斷標志。 SQL語句總體上可以分為兩類靜態(tài)SQL語句和動態(tài)SQL語句。靜態(tài)SQL語句是在運行時不會發(fā)生改變的SQL語句,因此可以被硬編碼到應用中。與此相対,動態(tài)SQL語句是指在運行時才被構(gòu)建的SQL語句。進ー步,對于靜態(tài)SQL語句,又分為兩種情況該靜態(tài)SQL語句已被捆綁(bind)和尚未捆綁。已捆綁的一個或多個靜態(tài)SQL語句可被包括在稱為封裝體(package)的結(jié)構(gòu)中。 根據(jù)本發(fā)明的實施方式,對于動態(tài)SQL語句或者未經(jīng)捆綁的靜態(tài)SQL語句而言,如果用戶希望對其進行診斷,則可以通過向該SQL語句添加定制的關(guān)鍵字而設置上述標志。例如,在本發(fā)明的某些實施方式中,可以向語句中添加例如“ WITH DIAGNOSE”的定制關(guān)鍵字。作為示例,下面示出了添加有上述定制關(guān)鍵字的ー個SQL語句SELECT * FROM Tl, T2WHERE Tl. Cl = Τ2· ClWITH DIAGNOSE ;應當理解,在此給出的關(guān)鍵字以及添加關(guān)鍵字的位置僅僅是示例性的,其他任何定制的關(guān)鍵字以及添加方式都是可行的,本發(fā)明的范圍在此方面不受限制。相應地,對于添加有此類定制關(guān)鍵字的SQL語句,根據(jù)本發(fā)明實施方式的RDMBS系統(tǒng)在運行時將會把與該SQL語句相關(guān)聯(lián)的診斷標志設為有效。特別地,根據(jù)本發(fā)明的某些實施方式,當SQL語句的實例被執(zhí)行時,可以在運行該SQL語句實例的線程級別設置診斷標志。注意,這僅僅是示例性的,還可以通過任何其他適當?shù)姆绞皆谶\行時設置診斷標志,例如將與每個SQL語句相關(guān)聯(lián)的診斷標志保存在可訪問的存儲位置和/或文件中。本發(fā)明的范圍在此方面不受限制。另ー方面,對于已捆綁的靜態(tài)SQL語句,可以通過定制的數(shù)據(jù)庫命令而設置上述標志。例如,根據(jù)本發(fā)明的某些實施方式,此類定制命令的形式可以是SET DIAGNOSE PACKAGE (X)STMTNO(Y)其中參數(shù)X是經(jīng)捆綁而獲得的包含所考慮SQL語句的封裝體,而Y標識所考慮的SQL語句在該封裝體中的位置。應當理解,在此給出的用于設置診斷標志的定制命令僅僅是示例性的,其他任何定制的數(shù)據(jù)庫命令都可用于設置與已捆綁的靜態(tài)SQL語句相關(guān)聯(lián)的診斷標志。本發(fā)明的范圍在此方面不受限制。此類定制數(shù)據(jù)庫命令例如可以向RDBMS中的命令控制器等實體發(fā)送。響應于接收到此類命令,命令控制器可以在包含已捆綁靜態(tài)SQL語句的封裝體中定位想要處理的SQL語句,并且例如為其加上特定的標簽。由此,當該SQL語句被RDMBS系統(tǒng)執(zhí)行時,可以根據(jù)所加的特定標簽,在運行時將與該SQL語句關(guān)聯(lián)的診斷標志的狀態(tài)設置為有效。與上文類似,作為示例,診斷標志仍然可被設置在運行該SQL語句實例的線程級別。應當理解,上文所描述的僅僅是示例性的?;谠诖私o出的教導和啟示,本領(lǐng)域技術(shù)人員可以采用目前已知或者將來開發(fā)的任何適當方式,在運行時設置與特定SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài)。本發(fā)明的范圍在此方面不受限制。返回圖1,在步驟S104,如果與SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài)被確定無效,則方法100結(jié)束。在這種情況下,SQL語句可被常規(guī)地執(zhí)行,并未執(zhí)行任何診斷動作。另ー方面,如果診斷標志的狀態(tài)在步驟S104處被確定為有效,則方法100進行到步驟S106,在此執(zhí)行針對該SQL語句的轉(zhuǎn)儲。具體地,可以對與該SQL語句相關(guān)聯(lián)的存儲空間(例如,存儲器中的特定存儲塊)中的某些或全部內(nèi)容進行拷貝和記錄,從而生成轉(zhuǎn)儲數(shù)據(jù),以供用戶隨后分析和處理。轉(zhuǎn)儲操作的具體實現(xiàn)可以按照目前已知或者將來開發(fā)的任何適當方式來進行,本發(fā)明的范圍在此方面不受限制。在步驟S106完成之后,方法100隨之結(jié)束。應當理解,在本發(fā)明的一個實施方式中,由于診斷標志是特定于SQL語句的,因此轉(zhuǎn)儲是針對個體SQL語句執(zhí)行的,而不是針對操作數(shù)據(jù)庫的整個應用程序。而且,如下文詳述的,對于轉(zhuǎn)儲的每個SQL語句,可以通過轉(zhuǎn)儲配置信息來控制拷貝和記錄關(guān)聯(lián)存儲空間中的哪些內(nèi)容,而并不一定對該空間中的全部內(nèi)容進行轉(zhuǎn)儲。這些特征都顯著區(qū)別于現(xiàn)有技術(shù)中的轉(zhuǎn)儲。以此方式,可以更加靈活、有效地診斷每個SQL語句的執(zhí)行對系統(tǒng)造成的影響。在方法100的某些優(yōu)選實施方式中,轉(zhuǎn)儲不僅可以在SQL語句級別執(zhí)行,而且還可以特定于SQL語句所包含的每個處理步驟,從而進ー步降低粒度,提高轉(zhuǎn)儲操作的可控性和靈活性。下面將結(jié)合圖2詳細描述本發(fā)明的這種優(yōu)選實施方式。圖2示出了根據(jù)本發(fā)明的另ー實施方式的用于控制數(shù)據(jù)庫轉(zhuǎn)儲的方法200的流程圖。方法200可以作為上文參考圖I描述的優(yōu)選實施方式而被實現(xiàn)。通過下文描述將會理解,方法200將轉(zhuǎn)儲的粒度進ー步降低到SQL語句所包含的每個處理步驟。方法200開始之后,在步驟S202,執(zhí)行SQL語句所包含的處理步驟(或簡稱“步驟,,)。如本領(lǐng)域中已知的,為了實現(xiàn)ー個SQL語句所描述的邏輯操作,需要執(zhí)行ー個或多個處理步驟。同樣已知的是,ー個SQL語句所包含的所有處理步驟通常是順序執(zhí)行的。因此,在該實施方式中,在給定的SQL語句初始執(zhí)行時,在步驟S202處執(zhí)行的通常是該語句所包含的第一個處理步驟。接下來,在步驟S204,確定與當前SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài)是否為有效,該診斷標志指示是否執(zhí)行轉(zhuǎn)儲??梢岳斫猓椒?00中的步驟S204是上文參考圖I描述的步驟S104的一種實施方式。也即,對診斷標志的狀態(tài)的確定是響應于執(zhí)行SQL語句所包含的處理步驟而完成的。需要說明的是,對于當前SQL語句,在其任何以及每ー個處理步驟執(zhí)行時,所檢查和確定的都是與該SQL語句相關(guān)聯(lián)的同一標志的狀態(tài)。換言之,盡管方法200可以針對SQL語句的每個處理步驟進行操作,但是與方法100類似,診斷標志仍然存在于SQL語句級別。、與SQL語句相關(guān)聯(lián)的診斷標志及其設置方法與上文參考圖I描述的類似,在此不再贅述。如果在步驟S204處確定與SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài)為無效,表明無需執(zhí)行針對該SQL語句的診斷。在這種情況下,方法200進行到步驟S212,在此確定是否有更多有待執(zhí)行的處理步驟。如果存在后續(xù)待執(zhí)行的處理步驟,則方法200返回步驟S202以繼續(xù)執(zhí)行。另ー方面,如果在步驟S204處確定與當前SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài)為有效,則方法200繼續(xù)進行到步驟S206。在步驟S206,訪問與當前處理步驟相關(guān)聯(lián)的轉(zhuǎn)儲配置信息。注意,與診斷標志特定于SQL語句不同,轉(zhuǎn)儲配置信息是特定于每個處理步驟的。換言之,盡管診斷標志存在于SQL語句級別,但是轉(zhuǎn)儲配置信息存在于處理步驟級別。根據(jù)本發(fā)明的某些實施方式,轉(zhuǎn)儲配置信息例如可以包含在相應的轉(zhuǎn)儲配置文件中。當然這僅僅是示例性的,轉(zhuǎn)儲配置信息也可以通過其他任何適當?shù)姆绞綄崿F(xiàn)。本發(fā)明的范圍在此方面不受限制。
接下來,方法200進行到步驟S208,在此根據(jù)步驟S206處訪問的轉(zhuǎn)儲配置信息,確定是否執(zhí)行針對當前處理步驟的轉(zhuǎn)儲。如果結(jié)果為“是”,則方法200進行到步驟S210,以基干與當前處理步驟相關(guān)聯(lián)的轉(zhuǎn)儲配置信息,執(zhí)行針對當前處理步驟的轉(zhuǎn)儲。否則,如果在步驟S208處確定不執(zhí)行處理步驟轉(zhuǎn)儲,則方法進行到步驟S212以判斷是否還有更多待執(zhí)行的處理步驟。通過以上描述可以理解,在根據(jù)本發(fā)明實施方式的方法200中,與每個處理步驟相關(guān)聯(lián)的轉(zhuǎn)儲配置信息可以指示是否執(zhí)行針對該處理步驟的轉(zhuǎn)儲,以及轉(zhuǎn)儲的具體細節(jié)。由此,轉(zhuǎn)儲不但可以特定于SQL語句,而且還可以進一歩特定于每個處理步驟。更具體地,在與SQL語句的診斷標志有效(由此指示執(zhí)行針對該SQL語句的轉(zhuǎn)儲)的情況下,可以進一歩通過轉(zhuǎn)儲配置信息來控制針對每個處理步驟是否執(zhí)行轉(zhuǎn)儲以及轉(zhuǎn)儲的具體細節(jié)。以此方式,能夠更好地捕獲感興趣的不同存儲空間區(qū)域、片段或者數(shù)據(jù),從而更為有效地診斷不同的SQL問題。參考下面的表1,其示出了在本發(fā)明的某些實施方式中,分別與處理步驟I-N相關(guān)聯(lián)的轉(zhuǎn)儲配置信息的示例。通過限定不同的轉(zhuǎn)儲配置信息,可以在SQL語句的任何處理步驟被執(zhí)行時,捕獲與該SQL語句相關(guān)的運行時存儲空間的任意部分。應當理解,盡管在表I中與不同步驟相關(guān)聯(lián)的轉(zhuǎn)儲配置信息被示為包含在ー個表中,但這并非是必須的。
權(quán)利要求
1.一種用于控制數(shù)據(jù)庫的轉(zhuǎn)儲的方法,包括 響應于針對數(shù)據(jù)庫的結(jié)構(gòu)化查詢語言SQL語句被執(zhí)行,確定與所述SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài),所述診斷標志指示是否執(zhí)行轉(zhuǎn)儲;以及 響應于所述診斷標志的狀態(tài)被確定為有效,執(zhí)行針對所述SQL語句的轉(zhuǎn)儲。
2.如權(quán)利要求I所述的方法,其中確定與所述SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài)包括 響應于執(zhí)行所述SQL語句所包含的處理步驟,確定所述診斷標志的狀態(tài); 以及其中執(zhí)行針對所述SQL語句的轉(zhuǎn)儲包括 訪問與所述處理步驟相關(guān)聯(lián)的轉(zhuǎn)儲配置信息;以及 響應于所述轉(zhuǎn)儲配置信息指示執(zhí)行轉(zhuǎn)儲,基于所述轉(zhuǎn)儲配置信息執(zhí)行針對所述處理步驟的轉(zhuǎn)儲。
3.如權(quán)利要求2所述的方法,進ー步包括 基于針對處理步驟的轉(zhuǎn)儲,生成針對所述SQL語句的轉(zhuǎn)儲數(shù)據(jù)。
4.如權(quán)利要求1-3任一項所述的方法,進ー步包括 響應于針對所述SQL語句的轉(zhuǎn)儲完成,將所述診斷標志重置為無效。
5.如權(quán)利要求1-3任一項所述的方法,進ー步包括 響應于針對所述SQL語句的轉(zhuǎn)儲完成,清理轉(zhuǎn)儲期間產(chǎn)生的臨時數(shù)據(jù)。
6.如權(quán)利要求1-3任一項所述的方法,其中所述診斷標志在運行所述SQL語句的實例的線程級別被設置。
7.如權(quán)利要求1-3任一項所述的方法,其中如果所述SQL語句是動態(tài)SQL語句或者未捆綁的靜態(tài)SQL語句,所述診斷標志是通過向所述SQL語句添加定制的關(guān)鍵字而設置的。
8.如權(quán)利要求1-3任一項所述的方法,其中如果所述SQL語句是已捆綁的靜態(tài)SQL語句,所述診斷標志是通過定制的數(shù)據(jù)庫命令而設置的。
9.ー種用于控制數(shù)據(jù)庫的轉(zhuǎn)儲的設備,包括 標志確定裝置,被配置為用于響應于針對數(shù)據(jù)庫的結(jié)構(gòu)化查詢語言SQL語句被執(zhí)行,確定與所述SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài),所述診斷標志指示是否執(zhí)行轉(zhuǎn)儲;以及轉(zhuǎn)儲執(zhí)行裝置,被配置為用于響應于所述診斷標志的狀態(tài)被確定為有效,執(zhí)行針對所述SQL語句的轉(zhuǎn)儲。
10.如權(quán)利要求9所述的設備,其中所述標志確定裝置進ー步包括 步驟級確定裝置,被配置為用于響應于執(zhí)行所述SQL語句所包含的處理步驟而確定所述診斷標志的狀態(tài); 以及其中所述轉(zhuǎn)儲執(zhí)行裝置進ー步包括 步驟級配置訪問裝置,被配置為用于訪問與所述處理步驟相關(guān)聯(lián)的轉(zhuǎn)儲配置信息;以及 步驟級轉(zhuǎn)儲執(zhí)行裝置,被配置為響應于所述轉(zhuǎn)儲配置信息指示執(zhí)行轉(zhuǎn)儲、根據(jù)所述轉(zhuǎn)儲配置信息執(zhí)行針對所述處理步驟的轉(zhuǎn)儲。
11.如權(quán)利要求9所述的設備,進一歩包括 轉(zhuǎn)儲數(shù)據(jù)生成裝置,被配置為用于基于針對處理步驟的轉(zhuǎn)儲而生成針對所述SQL語句的轉(zhuǎn)儲數(shù)據(jù)。
12.如權(quán)利要求9-11任一項所述的設備,進一步包括 標志重置裝置,被配置為用于響應于針對所述SQL語句的轉(zhuǎn)儲完成而將所述診斷標志重置為無效。
13.如權(quán)利要求9-11任一項所述的設備,進ー步包括 臨時數(shù)據(jù)清理裝置,被配置為用于響應于針對所述SQL語句的轉(zhuǎn)儲完成而清理轉(zhuǎn)儲期間產(chǎn)生的臨時數(shù)據(jù)。
14.如權(quán)利要求9-11任一項所述的設備,其中所述診斷標志在運行所述SQL語句的實例的線程級別被設置。
15.如權(quán)利要求9-11任一項所述的設備,其中如果所述SQL語句是動態(tài)SQL語句或者未捆綁的靜態(tài)SQL語句,所述診斷標志是通過向所述SQL語句添加定制的關(guān)鍵字而設置的。
16.如權(quán)利要求9-11任一項所述的設備,其中如果所述SQL語句是已捆綁的靜態(tài)SQL語句,所述診斷標志是通過定制的數(shù)據(jù)庫命令而設置的。
17.ー種用于控制數(shù)據(jù)庫的轉(zhuǎn)儲的系統(tǒng),包括 標志設置設備,被配置為用于設置與結(jié)構(gòu)化查詢語言SQL語句相關(guān)聯(lián)的診斷標志,所述診斷標志指示是否執(zhí)行轉(zhuǎn)儲; SQL執(zhí)行設備,被配置為用于執(zhí)行所述SQL語句;以及 轉(zhuǎn)儲控制設備,被配置為用于響應于所述SQL執(zhí)行設備執(zhí)行所述SQL語句,根據(jù)與所述SQL語句相關(guān)聯(lián)的診斷標志來控制所述SQL語句的轉(zhuǎn)儲,其中所述轉(zhuǎn)儲控制設備包含如權(quán)利要求9-14任一項所述的設備。
18.如權(quán)利要求17所述的系統(tǒng),其中所述標志設置設備進一歩包括 第一設置裝置,被配置為用于響應于所述SQL語句是已捆綁的靜態(tài)SQL語句而生成定制的數(shù)據(jù)庫命令; 并且其中所述系統(tǒng)進ー步包括 命令控制設備,被配置為用于響應于所述定制的數(shù)據(jù)庫命令,通過操縱包含所述靜態(tài)SQL語句的封裝體而設置所述診斷標志。
19.如權(quán)利要求17所述的系統(tǒng),其中所述標志設置設備進一歩包括 第二設置裝置,被配置為用于響應于所述SQL語句是動態(tài)SQL語句或者未捆綁的靜態(tài)SQL語句,通過向所述SQL語句添加定制的關(guān)鍵字來設置所述診斷標志。
全文摘要
本發(fā)明的實施方式用于數(shù)據(jù)庫轉(zhuǎn)儲的方法、設備和系統(tǒng)。具體地,公開了一種用于控制數(shù)據(jù)庫的轉(zhuǎn)儲的方法,包括響應于針對數(shù)據(jù)庫的結(jié)構(gòu)化查詢語言SQL語句被執(zhí)行,確定與所述SQL語句相關(guān)聯(lián)的診斷標志的狀態(tài),所述診斷標志指示是否執(zhí)行轉(zhuǎn)儲;以及響應于所述診斷標志的狀態(tài)被確定為有效,執(zhí)行針對所述SQL語句的轉(zhuǎn)儲。特別地,根據(jù)本發(fā)明的實施方式,轉(zhuǎn)儲不但可以特定于SQL語句,而且還可以特定于SQL語句所包含的任何處理步驟。還公開了相應的設備和系統(tǒng)。根據(jù)本發(fā)明的實施方式,數(shù)據(jù)庫SQL問題診斷的靈活性和針對性可得以改善。
文檔編號G06F17/30GK102651010SQ20111005164
公開日2012年8月29日 申請日期2011年2月28日 優(yōu)先權(quán)日2011年2月28日
發(fā)明者劉沭華, 周祥, 賈焱, 陳東升 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1