DB Query Analyzer 中断SQL语句的执行

<wbr>DB Query Analyzer 中断SQL语句的执行</wbr>

马根峰

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

摘要:<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr> 万能数据库查询分析器有两个版本:DB 查询分析器(中文版本)和 DB Query Analyzer(英文版本)。它不仅能够直接获取SQL语句执行的时间,而且能够真正中断非常耗时的SQL语句的执行,从前台界面或者从后台操作系统都可以验证到SQL语句被中断,而不会在数据库服务器主机产生僵尸进程。这些优点是绝大部分数据库自带的客户端工具所不具备的,文章以英文版本 DB Query Analyzer 连接Windows2000 Server操作系统的MYSQL数据库为例,来展现整个中断处理过程。

关键词:<wbr><wbr> DB Query Analyzer;MYSQL;SQL语句;数据库<wbr></wbr></wbr></wbr>

中图法分类号:<wbr><wbr><wbr><wbr><wbr> TP392   <strong>文献标识码:</strong> A<wbr><wbr><wbr>    <strong>文章编号:</strong>1006-8228(2011)12-35-02<wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr><wbr></wbr>

<wbr></wbr>

DB Query Analyzer to cancel a Running<wbr>SQL statement</wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>MA Gen-feng<wbr><wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> ( Guangdong Unitoll Collection Incorporated, GuangZhou,Guangdong 510300, China)</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

Abstract:DB Query Analyzer has two version:<wbr>simplified Chinese edition and English edition. It can<wbr>not only get known the running time of SQL statement directory,but alse cancel a running and very time-consuming<wbr>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<wbr>database<wbr>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.</wbr></wbr></wbr></wbr></wbr>

Key words: <wbr><wbr>DB Query Analyzer;MYSQL;SQL statement;database</wbr></wbr>

<wbr></wbr>

0<wbr><wbr><wbr><wbr><wbr><wbr><wbr> 引言</wbr></wbr></wbr></wbr></wbr></wbr></wbr><wbr></wbr>

从事大型数据库查询、数据分析工作的人经常遇到这样的情况,自己编写的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”变为“<wbr> ”)。而不是像某些数据库客户端工具那样,需要从前台关闭程序,然后再从后台操作系统Kill掉还在运行的僵尸进程。因此,能够中断已经向DBMS提交的SQL语句的执行,是成熟的DBMS客户端工具必须具备的功能。</wbr>

下面以Windows2000 Server操作系统上安装的MYSQL数据库为例,从前台 DB Query Analyzer、后台MYSQL层面向大家详细说明 DB Query Analyzer 如何中断SQL语句的执行。

1<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> DB Query Analyzer 连接数据库</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

以用户mgf连接上ODBC数据源mysql_mgf后, DB Query Analyzer 会打开一个命令窗口,输入一条非常耗时的SQL语句如图1所示。

DB Query Analyzer 中断SQL语句的执行_第1张图片<wbr></wbr>

图1<wbr><wbr> DB Query Analyzer连接上数据库后,在打开的一个窗口中,输入SQL语句</wbr></wbr>

<wbr></wbr>DB Query Analyzer 中断SQL语句的执行_第2张图片

图2<wbr><wbr> DB Query Analyzer连接上数据库后,查看后台,看到ID为3的进程</wbr></wbr>

<wbr></wbr>

通过图2,可以清楚地看到,在打开 DB Query Analyzer 连接上数据源mysql_mgf之前,在MYSQL命令行窗口用“show processlist”命令找不到以用户“mgf”登录的ID为3的DBQueryAnalyzer.exe后台进程。

在 DB Query Analyzer 连接上数据源mysql_mgf之后,再执行“show processlist”命令如箭头①所示,就可以看到如箭头②ID为3的进程了,表明它已经连接到数据库了,其状态为“<wbr> ”。</wbr>

<wbr></wbr>

2<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> DB Query Analyzer 执行SQL语句</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

在 DB Query Analyzer 中点击“运行”按钮或者按下F5功能键就会向DBMS提交SQL语句。在MYSQL命令行窗口我们依然用 “show processlist” 命令来查看ID为3进程的状态,如图3所示:

DB Query Analyzer 中断SQL语句的执行_第3张图片<wbr></wbr>

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

通过图3,可以清看到, DBQueryAnalyzer.exe的ID为3的后台进程状态为“Copying to tmp table”(如箭头①所示)。箭头②所示还是连接上数据库时ID为3的后台进程状态为“ ”。

<wbr></wbr>

3<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> DB Query Analyzer 中断SQL语句的执行</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

在 DB Query Analyzer 菜单“Query”中选择“Stop”或者点击工具栏中的“Cancel”按钮,《DB Query Analyzer》中会看到“Query Canceled”的提示。如图4所示:

DB Query Analyzer 中断SQL语句的执行_第4张图片<wbr></wbr>

图4<wbr> 点击DB Query Analyzer中“中断”按钮,SQL语句执行被中断</wbr>

<wbr></wbr>

<wbr>图5中,在MYSQL命令行窗口我们依然用“show processlist” 命令来查看ID为3的后台进程状态从“Copying to tmp table”变为“<wbr> ”,中断操作并没有产生任何僵尸时程,如箭头①所示。</wbr></wbr>

DB Query Analyzer 中断SQL语句的执行_第5张图片<wbr></wbr>

图5<wbr><wbr> 中断SQL语句执行后,DB Query Analyzer.exe的ID为3的后台进程状态为“<wbr> ”</wbr></wbr></wbr>

<wbr></wbr>

4<wbr><wbr><wbr><wbr><wbr><wbr><wbr> DB Query Analyzer 退出后</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>DB Query Analyzer 退出后,MYSQL命令行窗口执行命令“show processlist”,已经找不到DBQueryAnalyzer.exe后台ID为3的进程,没有产生任何僵尸时程。如图6所示:</wbr>

DB Query Analyzer 中断SQL语句的执行_第6张图片<wbr></wbr>

图6<wbr><wbr> 退出DB Query Analyzer后,查看后台,ID为3的进程结束</wbr></wbr>

<wbr></wbr>

5<wbr><wbr><wbr><wbr><wbr><wbr><wbr> 结束语</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

在数据库维护、管理、查询的时候,经常会遇到一些SQL语句的执行非常耗时,即使你对查询进行了优化并且充分使用了索引。因此常常需要中断SQL语句的执行。能否中断SQL语句的执行是成熟的数据库客户端工具必须具备的功能。跨越数据库平台的 DB Query Analyzer 完全实现这一功能,从后台数据库服务器上可以看到中断SQL语句的执行所带来的进程状态的变化,并且在后台数据库服务器上不会产生任何僵尸进程。

<wbr></wbr>

参考文献:

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

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

[3]<wbr> 马根峰 · DB Query Analyzer中的事务管理在DB2中的应用[M]· 北京:电脑编程技巧与维护2011.22</wbr>

[4]<wbr> 马根峰 · 《DB 查询分析器》批量执行DML语句并返回更详细的信息[M]· 北京:电脑编程技巧与维护2011.24</wbr>

[5]<wbr> 张龙祥,黄正端,陶影<wbr> · 数据库原理与设计[M] · 成都:西南交通大学出版社,1995</wbr></wbr>

本文收录于<<计算机时代>>2011年第12期

你可能感兴趣的:(sql语句)