网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Windows XP下安装SQL2000企业版 .
.使用索引调节向导调整应用程序的.
.一些在SQL帮助中找不到的系统存储.
.sql server 2005 排序规则与大小.
.利用SQL Server复制技术实现数据.
.在IE中直接连接SQL数据库 .
.用SQL语句完成SQL Server数据库的.
.关于sql数据库维护失败的问题查找.
.SQL关于联合的基本概念和示例.
.利用同义词简化SQL Server 2005开.
.Micorsoft SQL Server 2008数据仓.
.SQL Server中使用DTS设计器进行数.
.用SQL SERVER记录站点日志.
.SQL Server的Collate语句需注意.
.收集SQL Server统计信息.
.在数据库中建表时记录长度为什么.
.将列更新从一个表传递到另一个表.
.用SQL 2000创建用户化XML流.
.SQL Server 2005安装失败的处理方.
.详细讲解提高数据库查询效率的实.

深入讲解阻塞现象的产生原因及处理方法

发表日期:2008-3-20


1. 使用 sp_who 这个存储过程, 查询sql上的当前进程, 观察 blk 列值是否有不为0的, 如果有不为 0 的, 表示有阻塞, 产生阻塞的进程的 spid 即是 blk 列值, 被阻塞的进程是 列 blk 值不为0的记录行对应的 spid。

2. 执行 sp_lock

3. 执行 sp_lock

4. 结合 2, 3 分析原因。

5. 使用 dbcc inputbuffer(

如果要自动删除阻塞的进程, 那么写一个 job 定期查询 sp_who , 将 blk 列值不为 0 的记录找出来, 用 kill 杀掉相关的进程即可。

注意, 一般不要轻易杀进程, 如果你的程序没有写好, 可能会导致不完整的数据。

例如, 在写订单主表和明细表的处理中, 没有使用事务, 当主表数据插入完成, 准备插入明细表数据时, 产生阻塞, 被你的监控程序 kill 掉的话, 就导致数据库中有不完整的订单(只有主表, 没有明细数据)。

另外, 如果你的程序的错误处理没有控制好, 则这样杀进程也容易导致程序崩溃, 丢失等。

另外, 查询进程相关的信息也可以直接查询 master.dbo.sysprocesses, 这里包含完整的信息, 你可以通过 blocked 列看是否有阻塞发生, 也可以看诸如登录的用户, 客户端, 使用此进程的前端applicationame等信息。

上一篇:把二进制的字段以字符串形式Select出来 人气:1284
下一篇:优化数据库的方法及SQL语句优化的原则 人气:1215
浏览全部SQL Server的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐