DB Query Analyzer 中断SQL语句的执行
?DB Query Analyzer 中斷SQL語句的執行
?????????????????????????????????????????????? 馬根峰
??????????????????? ( 廣東聯合電子收費股份有限公司, 廣州 510300)
摘要:???? 萬能數據庫查詢分析器有兩個版本:DB 查詢分析器(中文版本)和 DB Query Analyzer(英文版本)。它不僅能夠直接獲取SQL語句執行的時間,而且能夠真正中斷非常耗時的SQL語句的執行,從前臺界面或者從后臺操作系統都可以驗證到SQL語句被中斷,而不會在數據庫服務器主機產生僵尸進程。這些優點是絕大部分數據庫自帶的客戶端工具所不具備的,文章以英文版本 DB Query Analyzer 連接Windows2000 Server操作系統的MYSQL數據庫為例,來展現整個中斷處理過程。
關鍵詞:?? DB Query Analyzer;MYSQL;SQL語句;數據庫?
中圖法分類號:????? TP392 文獻標識碼: A??? 文章編號:1006-8228(2011)12-35-02???
?
? DB Query Analyzer to cancel a Running?SQL statement
???????????????????????????????????????????????????????MA Gen-feng??
??????????? ( Guangdong Unitoll Collection Incorporated, GuangZhou,Guangdong 510300, China)
Abstract:DB Query Analyzer has two version:?simplified Chinese edition and English edition. It can?not only get known the running time of SQL statement directory,but alse cancel a running and very time-consuming?SQL statement indeed, which can be verified on foreground interface or background operation system, and it does not cause zombie processes in database server. Most?database?don't provie the above functions in their client tools. Taking DB Query Analyzer connected to MySQL database based on Windows2000 Server as an example,the whole process of canceling a running SQL statement is illustrated.
Key words: ??DB Query Analyzer;MYSQL;SQL statement;database
?
?
0??????? 引言?
???????? 從事大型數據庫查詢、數據分析工作的人經常遇到這樣的情況,自己編寫的SQL語句充分使用了索引,并且經過了優化,但由于數據表太大,訪問數據庫也非常耗時。而大部分DBMS,包括大型數據庫系統Oracle、Sybase、DB2等其客戶端工具都不顯示SQL執行了多少時間。
???????? 中國本土程序員馬根峰推出的個人作品----萬能數據庫查詢分析器,其中文版本DB 查詢分析器、英文版本DB Query Analyzer,具有強大的功能、友好的操作界面、良好的操作性、跨越數據庫平臺。在《程序員》2007第2期的“新產品&工具點評”部分,該期只點評了5個工具,分別是“Adobe Acrobat 8 中文版”、“迅雷搜索 1.7 新版上線”、“Google 桌面搜索 5.0 中文發布”、“BEA 發布 WebLogic SIP Server 3.0”和特別推薦“萬能數據庫查詢分析器”發布。前面4個都是國內外大型軟件公司的產品,只有“萬能數據庫查詢分析器”是個人創作的軟件。截止到目前,在國內最著名的軟件下載網站“中關村在線”中下載量近九萬次,位居整個數據庫類排行謗中前20位。在世界范圍內,從功能上也僅有國外的Query Tool可以與萬能數據庫查詢分析器比肩,萬能數據庫查詢分析器無疑當屬國內第一查詢分析器。
???????? 萬能數據庫查詢分析器的使用者不僅可以直接在的狀態欄上看到SQL語句的執行時間,而且隨時可以中斷SQL語句的執行,在數據庫服務器主機上通過DBMS提供的命令還可以清楚地看到萬能數據庫查詢分析器進程狀態變化(MYSQL而言,狀態由“Copying to tmp table”變為“? ”)。而不是像某些數據庫客戶端工具那樣,需要從前臺關閉程序,然后再從后臺操作系統Kill掉還在運行的僵尸進程。因此,能夠中斷已經向DBMS提交的SQL語句的執行,是成熟的DBMS客戶端工具必須具備的功能。
???????? 下面以Windows2000 Server操作系統上安裝的MYSQL數據庫為例,從前臺 DB Query Analyzer、后臺MYSQL層面向大家詳細說明 DB Query Analyzer 如何中斷SQL語句的執行。
?
?
1???????? DB Query Analyzer 連接數據庫
???????? 以用戶mgf連接上ODBC數據源mysql_mgf后, DB Query Analyzer 會打開一個命令窗口,輸入一條非常耗時的SQL語句如圖1所示。
?
???????? 圖1?? DB Query Analyzer連接上數據庫后,在打開的一個窗口中,輸入SQL語句
?
?
???????? 圖2?? DB Query Analyzer連接上數據庫后,查看后臺,看到ID為3的進程
?
???????? 通過圖2,可以清楚地看到,在打開 DB Query Analyzer 連接上數據源mysql_mgf之前,在MYSQL命令行窗口用“show processlist”命令找不到以用戶“mgf”登錄的ID為3的DBQueryAnalyzer.exe后臺進程。
???????? 在 DB Query Analyzer 連接上數據源mysql_mgf之后,再執行“show processlist”命令如箭頭①所示,就可以看到如箭頭②ID為3的進程了,表明它已經連接到數據庫了,其狀態為“? ”。
?
?
2???????? DB Query Analyzer 執行SQL語句
???????? 在 DB Query Analyzer 中點擊“運行”按鈕或者按下F5功能鍵就會向DBMS提交SQL語句。在MYSQL命令行窗口我們依然用 “show processlist” 命令來查看ID為3進程的狀態,如圖3所示:
?
???????? 圖3?? 執行SQL語句過程中查看后臺進程狀態
???????? 通過圖3,可以清看到, DBQueryAnalyzer.exe的ID為3的后臺進程狀態為“Copying to tmp table”(如箭頭①所示)。箭頭②所示還是連接上數據庫時ID為3的后臺進程狀態為“ ”。
?
?
3???????? DB Query Analyzer 中斷SQL語句的執行
???????? 在 DB Query Analyzer 菜單“Query”中選擇“Stop”或者點擊工具欄中的“Cancel”按鈕,《DB Query Analyzer》中會看到“Query Canceled”的提示。如圖4所示:
?
???????? 圖4? 點擊DB Query Analyzer中“中斷”按鈕,SQL語句執行被中斷
?
?
???????? 圖5中,在MYSQL命令行窗口我們依然用“show processlist” 命令來查看ID為3的后臺進程狀態從“Copying to tmp table”變為“? ”,中斷操作并沒有產生任何僵尸時程,如箭頭①所示。
?
???????? 圖5?? 中斷SQL語句執行后,DB Query Analyzer.exe的ID為3的后臺進程狀態為“? ”
?
?
4??????? DB Query Analyzer 退出后
???????? DB Query Analyzer 退出后,MYSQL命令行窗口執行命令“show processlist”,已經找不到DBQueryAnalyzer.exe后臺ID為3的進程,沒有產生任何僵尸時程。如圖6所示:
?
???????? 圖6?? 退出DB Query Analyzer后,查看后臺,ID為3的進程結束
?
?
5??????? 結束語
???????? 在數據庫維護、管理、查詢的時候,經常會遇到一些SQL語句的執行非常耗時,即使你對查詢進行了優化并且充分使用了索引。因此常常需要中斷SQL語句的執行。能否中斷SQL語句的執行是成熟的數據庫客戶端工具必須具備的功能。跨越數據庫平臺的 DB Query Analyzer 完全實現這一功能,從后臺數據庫服務器上可以看到中斷SQL語句的執行所帶來的進程狀態的變化,并且在后臺數據庫服務器上不會產生任何僵尸進程。
?
?
?
參考文獻:
[1]? 馬根峰 · 萬能數據庫查詢分析器中的事務管理在Oracle中的應用[M]· 上海:微型電腦應用2008.4
[2]? 新產品&工具點評? 特別推薦:“萬能數據庫查詢分析器”發布 · 程序員,2007.2
[3]? 馬根峰 · DB Query Analyzer中的事務管理在DB2中的應用[M]· 北京:電腦編程技巧與維護2011.22
[4]? 馬根峰 · 《DB 查詢分析器》批量執行DML語句并返回更詳細的信息[M]· 北京:電腦編程技巧與維護2011.24
[5]? 張龍祥,黃正端,陶影? · 數據庫原理與設計[M] · 成都:西南交通大學出版社,1995
?
?
????????????????????? 本文收錄于<<計算機時代>>2011年第12期
轉載于:https://www.cnblogs.com/wuyida/archive/2012/03/03/6300831.html
總結
以上是生活随笔為你收集整理的DB Query Analyzer 中断SQL语句的执行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python整数分节输出_pyfacto
- 下一篇: Silverlight控件-Slider