《DB 查询分析器》中断SQL语句的执行

马根峰

                                                       ( 广东联合电子收费股份有限公司, 广州 510300)

摘要     从事数据库查询、数据分析工作的人会经常遇到这样的情况,有些SQL语句的执行非常耗时,并且数据库厂家提供的客户端工具无法看出SQL语句执行的时间,有时还不得不中断已经提交的SQL语句的执行。万能数据库查询分析器中英文版本《DB 查询分析器》、《DB Query Analyzer》不仅能够直接获取SQL语句执行的时间,而且能够真正中断SQL语句的执行,这从前台界面或者从后台操作系统都可以验证到SQL语句被中断,而不会在数据库服务器主机产生僵尸进程。本文以中文版本《DB 查询分析器》连接IBM 550小型机AIX操作系统下DB2数据库为例,来展现整个过程。

关键词   DB Query Analyzer;数据库客户端工具;中断SQL语句的执行 

中图分类号:TP311.1.32    文献标识码:A     DOI:10.3969/j.issn.1003-6970.2011.06.013

 


                                      How does DB Query Analyzer cancel the SQL statement committed to DBMS

 

                                     ( GuangDong Unitoll collection incorporated, GuangZhou 510300)

【Abstract 】  

【Key words】   DB Query Analyzer;Client tools of DBMS;Cancel the SQL statement being executing


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个都是国内外大型软件公司的产品,只有“万能数据库查询分析器”是个人创作的软件。截止到目前,在国内最著名的软件下载网站“中关村在线”中下载量近9万次,位居整个数据库类排行谤中前20位。在世界范围内,从功能上也仅有国外的Query Tool可以与万能数据库查询分析器比肩,万能数据库查询分析器当属国内第一查询分析器无疑。

     你不仅可以直接在万能数据库查询分析器的状态栏上看到SQL语句的执行时间,而且随时可以中断SQL语句的执行,并且在数据库服务器主机上通过DBMS提供的命令可以清楚地看到万能数据库查询分析器进程状态变化(DB2而言,状态由“Executing”变为“Waiting”)。而不是像某些数据库客户端工具那样,需要从前台关闭程序,然后再从后台操作系统Kill掉还在运行的僵尸进程。因此,能够中断已经向DBMS提交的SQL语句的执行,是成熟的DBMS客户端工具必须具备的功能。

     下面以IBM AIX操作系统上安装的DB2数据库为例,从前台《DB 查询分析器》、后台AIX操作系统层面向大家详细说明《DB 查询分析器》如何中断SQL语句的执行。

 


1       




                   图1    《DB 查询分析器》连接上数据库后,在打开的一个窗口中,输入SQL语句



                      图2  

   

而在《DB 查询分析器》连接上数据源UNIT156之后,就可以看到进程DBQueryAnalyzer.exe,其状态为“Connect Completed”,表明它已经连接到数据库了。

 


2       

     在《DB 查询分析器》中点击“运行”按钮或者按下F5功能键就会向DBMS提交SQL语句。在AIX操作系统上我们依然用 “list applications show detail” 命令来查看进程DBQueryAnalyzer.exe的状态,如图3所示:

 

图3  

      通过图3,可以清看到, 《DB 查询分析器》的进程DBQueryAnalyzer.exe状态为“UOW Executing”(如②所示)。①所示还是连接上数据库时进程DBQueryAnalyzer.exe的状态为“Connect Completed”。

 


3       

   

 


    

 


       图5  

 


4       

   

 


                  图6  

 


5       

      在数据库维护、管理、查询的时候,经常会遇到一些SQL语句的执行非常耗时,即使你对查询进行了优化并且充分使用了索引。因此常常需要中断SQL语句的执行。能否中断SQL语句的执行是成熟的数据库客户端工具必须具备的功能。跨越数据库平台的《DB 查询分析器》,完全支持这一功能。并且从后台操作系统中都可以看到中断SQL语句的执行所带来的进程状态的变化。


 

 

 


参考文献:

[1]  马根峰 · 万能数据库查询分析器中的事务管理在Oracle中的应用· 上海:微型电脑应用2011.11

[2]  新产品&工具点评