马根峰
摘要:
关键词:
中图法分类号:
DB Query Analyzer to cancel a Running
Abstract:DB Query Analyzer has two version:
Key words:
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”变为“
下面以Windows2000 Server操作系统上安装的MYSQL数据库为例,从前台 DB Query Analyzer、后台MYSQL层面向大家详细说明 DB Query Analyzer 如何中断SQL语句的执行。
1
以用户mgf连接上ODBC数据源mysql_mgf后, DB Query Analyzer 会打开一个命令窗口,输入一条非常耗时的SQL语句如图1所示。
图1
图2
通过图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 中点击“运行”按钮或者按下F5功能键就会向DBMS提交SQL语句。在MYSQL命令行窗口我们依然用 “show processlist” 命令来查看ID为3进程的状态,如图3所示:
图3
通过图3,可以清看到, DBQueryAnalyzer.exe的ID为3的后台进程状态为“Copying to tmp table”(如箭头①所示)。箭头②所示还是连接上数据库时ID为3的后台进程状态为“ ”。
3
在 DB Query Analyzer 菜单“Query”中选择“Stop”或者点击工具栏中的“Cancel”按钮,《DB Query Analyzer》中会看到“Query Canceled”的提示。如图4所示:
图4
图5
4
图6
5
在数据库维护、管理、查询的时候,经常会遇到一些SQL语句的执行非常耗时,即使你对查询进行了优化并且充分使用了索引。因此常常需要中断SQL语句的执行。能否中断SQL语句的执行是成熟的数据库客户端工具必须具备的功能。跨越数据库平台的 DB Query Analyzer 完全实现这一功能,从后台数据库服务器上可以看到中断SQL语句的执行所带来的进程状态的变化,并且在后台数据库服务器上不会产生任何僵尸进程。
参考文献:
[1]
[3]
[4]
[5]
本文收录于<<计算机时代>>2011年第12期