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

 

                              《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

                                                                               MA Gen-feng  

                                      ( GuangDong Unitoll collection incorporated, GuangZhou 510300)

【Abstract 】   Persons engage in database querying or Data Analysis always face the situation they cann’t get any known of time consumed of the SQL statement committed to DBMS directly by the client tools supplied by DBMS Company. Some time they have to cancel the SQL statement committed to DBMS already. However, you can know the time consumed directly form the status bar of DB Query Analyze. Not only the simplified Chinese edition but also the English edition of DB Query Analyzer makes it easy to cancel the SQL statement being executing. You can verify it by the command of Operation System. You do not worry about the hanged process after you shutdown DB Query Analyzer. This paper gives you the whole process how DB Query Analyze do it when DB Query Analyze connected to DB2 DBMS based on IBM AIX/P550.

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

 

       引言  

     从事大型数据库查询、数据分析工作的人经常遇到这样的情况,自己编写的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语句的执行。

       《DB 查询分析器》连接数据库

     A、     连接上ODBC数据源unit156后,《DB 查询分析器》会打开一个命令窗口,输入一条非常耗时的SQL语句如下。

 


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

 


                      图2   《DB 查询分析器》连接上数据库后,查看后台,显示 “Connect Completed”

      通过图2,可以清楚地看到,在打开《DB 查询分析器》连接上数据源UNIT156之前,在AIX操作系统上用“list applications show detail”命令找不到《DB 查询分析器》的进程DBQueryAnalyzer.exe,如①所示。

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

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

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

 

图3   执行SQL语句过程中查看后台进程状态

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

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

     在《DB 查询分析器》菜单“查询”中选择“停止执行”或者点击工具栏中的“取消执行查询”按钮,《DB 查询分析器》中会看到“用户已取消查询”的提示。如图4所示:

 

                        图4  点击《DB 查询分析器》中“取消执行查询”按钮,SQL语句执行被中断

       在AIX操作系统上我们依然用“list applications show detail” 命令来查看进程DBQueryAnalyzer.exe的状态从“UOW Executing”变为“UOW Waiting”,中断操作并没有产生任何僵尸时程。

 
       图5   中断SQL语句执行后,后台进程DBQueryAnalyzer.exe的状态为“UOW Waiting”

       《DB 查询分析器》退出后

     《DB 查询分析器》退出后,AIX操作系统上执行命令“list applications show detail”,已经找不到进程DBQueryAnalyzer.exe,没有产生任何僵尸时程。如图6所示:

 
                  图6   退出《DB 查询分析器》后,查看后台,DBQueryAnalyzer.exe进程结束

       结束语

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

 

 

 

参考文献:

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

  [2]  新产品&工具点评  特别推荐:“万能数据库查询分析器”发布 · 程序员,2007.2

该论文已经发表在《软件》 2011年第6期, 参见

万方数据资源: http://c.wanfangdata.com.cn/periodical/ranj/2011-6.aspx    、

中国期刊全文数据库:

  http://acad.cnki.net/Kns55/oldNavi/n_CNKIPub.aspx?naviid=59&BaseID=RJZZ&NaviLink=%e6%a3%80%e7%b4%a2%3a%e8%bd%af%e4%bb%b6-%2fKns55%2foldNavi%2fn_list.aspx%3fNaviID%3d1%26Field%3dcykm%24%25%22%7b0%7d%22%26Value%3d%25e8%25bd%25af%25e4%25bb%25b6%26selectIndex%3d0%7c%e8%bd%af%e4%bb%b6

原文地址:https://www.cnblogs.com/wuyida/p/6300849.html