说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

sql阻塞相关的问题,我需要真正的高手,100分悬赏,长期有效。

编辑:说三道四文库 发布时间:2017-07-25 12:59
HTML文档下载 WORD文档下载 PDF文档下载
首先谢过进来的高手!
此问题,本人研究长达半年已久,尚未找出真正原因。
问题现象很简单,就是当两个spid同时访问某一资源时,会出现锁定进而发生阻塞。

先说下,我这里的程序环境。
SQL服务器是IBM品牌机,Win2000sp4,sql2000企业版,系统里没装其它软件。
只有一个用户数据库,数据文件有4G左右,日志文件有3G.
客户端情况:使用人数在50人左右,客户端软件是用PB开发的,这50人并非会同时访问数据库,但一运行这个客户端软件都会连接数据库。

发生阻塞的过程基本上是这样的:
A用户提交了某一个查询,比如查询了a表,返回结果正常,A用户进入等待状态,当然,它依然保持对服务器的连接。
B用户提交另一查询(有时候可能是update),也涉及到了a表,这时就有可能出问题了。B用户的这个SPID就会陷入等待状态,很多时候这种等待是无期限的,不知道这是不是所谓的死锁。当然,客户机的反应就是应用程序出现假死状态。

查阅微软官网,找到了这方面的文章,编号为224453和271509
(不知道什么原因,224453这篇文章现在没中文简体的了,但可以找到繁体的,强烈BS微软一下。)
http://support.microsoft.com/kb/224453/
http://support.microsoft.com/kb/162361/

按照224453中的指示,查询master.sysprocesses,确实能找到阻塞的SPID,KILL掉,一切都正常了。
现在的问题的,它为什么会发生阻塞呢?据同事介绍,之前还好好的,这期间软硬件都没改变过。
所以还得深入研究,说实在的,微软写的那些东西真的太专业且太啰嗦了,按他的指示,查这个表执行那个存储过程,经常是折腾了我半天搞出来的结果我又看得似懂非懂,哎,这也只能怪小弟我学艺不精,所以在此跪求进来的大虾们不吝赐教。
现列出一些我发现的问题点。
(1) 无论是否出现阻塞,服务器的CPU使用率都不高,基本上10%不到。
(2) 一个值得研究的现象:比如spid56被spid90阻塞,可是sysprocesses表中,spid90这个连接lastbatch的时间有可能是距离阻塞几个小时之前。也就是说,spid90这个连接上次执行操作已经过了几个小时了,但它还对某一数据保持锁定。当然,这种情况不是绝对的,通过我的观察,有的时候,这样的阻塞会自行解除。
(3)以下是在有阻塞时执行sp_blocker_pss80存储过程的结果:
等答案吧
UP..........
http://topic.csdn.net/u/20080721/20/15a60db6-34b5-4ea1-b392-11c42270aaab.html?19834
死锁啦..学习中....
该不会是查询设置了可重复读以后就没关闭连接吧,能看客户端的代码吗?
客户端 代码编写的事务处理有没有影响到啊
返回结果正常,为何A用户进入等待状态而不释放掉。
帮顶.
7楼,这个问题我也想不通,所以奇怪就在这里呀。但问题是,同样的程序,以前它好好的呢!
要说客户端程序有问题吧,我也怀疑过,但我没办法看到代码,所以也没证据。

不过,PB写的应用程序,它要连接SQL,肯定使用ODBC,也就是说,站在SQL Server的角色上去看,所以来自客户端的查询请求都是标准化的了。那么和PB代码关系也就不怎么大了,当然,公平是要看它的连接那一块是怎么做的。我不怎么懂PB,所以也无从下手。

另外,我通过SQL事件探查器,追踪了一段时间所有来自客户端的命令,发现都很正常呀,没什么特别的。那些客户端程序提交的SELECT语句都不复杂。
有可能是客户端代码问题,比如客户端开启了一个序列化级别的事务,且没有及时终止该事务 
这肯定是死锁,客户端语句是肯定有问题,会不会是几个客户端SQL同时查询时太大太长。就会出现这种情况。
从 lz 提供的信息分析,spid 56 的 select 语句在请求行 s 锁时,被 spid 90 在该行上保持的 x 锁阻塞。而 spid 90 一直没有完成事务,释放此 x 锁,从而造成了阻塞。具体原因可能与 spid 90 在请求 networkio 上的等待有关。

具体分析需要通过“事件跟踪器”跟踪一下 spid 90 所执行的 sql 语句,看看是什么语句在请求 networkio,这个 networkio 又与什么网络问题相关(可能要分析程序代码)。
该回复于2010-07-28 10:55:59被版主删除
帮顶,估计为客户端问题?以前没有发生是否是因为当时数据量小所以没有问题,现在数据量大了而几个客户端同时查询就太大太长了。

DBCC INPUTBUFFER(SPID)
看看那个SQL语句还是SP出问题了!
多谢12楼!
networkio这个你看一下1楼我的帖图,绿圈那里,是否不正常?

多谢15楼!
DBCC INPUTBUFFER(SPID)这个结果,我在1楼有帖出来的(最下面两行)。
帮顶。
或者你没事运行个cut 死锁的sp……
自己顶起来!
同样的程序,以前它好好的

是SQL的环境改变了? 还是客户端有修改过?

看起来很像是PB端没有AutoCommit的结果
更新时加上更新锁试试

这期间软硬件都没改变过。


千万不要信这个,呵呵。

帮顶。
看一下,想一下
楼主,你的问题我提两个解决参考方案:
1、首先查找你系统的开发程序bug(指的是PB)。这个访问压力不该出现这种情况,高概率是程序问题。 
    一些操作DB的方法程序bug,如连接DB方法,声明成静态方法,那么多用户调用时,就不会创建新对象,会出现程序层面的排队。 我在上万并发的情况,遇到过此类现象。  
    此外还有数据事务(程序+Sql两点都要查)也很有可能导致。
    此外还有外键关联……   

2、如果实在找不到原因,结合数据完整性要求, 可以把数据操作语句改为 select * from table with(nolock) 。加上后面这个修饰符,往往银行业务对数据即时性要求高,不适合这样写。

最后祝你,好运,找到原因,记得分享经验。
跟踪一下,看A/B都执行了哪些SQL指令。。。。SQL 2000不会有此低级错误。。。
我认为有两种可能
一,有人更改过select语句并在select时给表加了锁,可能为了防止数据不统一。select如果加了锁再select没有执行完之前,其它的任何语句都是等待状态。
二。你的代码编写不合理,系统压力过大,有些界面假死需要处理成线程,这样即便短暂等待也不会出现界面假死
正在受到相同问题的困扰
强顶此贴!本人也正受此困惑,而且情形一模一样!
查询了一些资料,归纳一下有以下几种可能:

1、应用程序中SQL语句更新后未及时提交或回滚,未在提交前处理了其他事务或有响应窗口消息需要用户确认的话,则此表一直处于锁定状态;

2、多表间提交顺序不一致,如X用户提交按顺序提交a、b两表,Y用户按b,a顺序提交,造成死锁

3、不知道病毒会不会造成这种状态,因为我的系统在有些客户那里就没有发生

4、客户端系统最好不要用同一版本Ghost
VB用WinSock设计Chat程序 运用MSChart,生成统计图形-VB资料 向文本框等等控件的系统右键菜单里追加自己定义的菜单-VB资料 在VB中用定时控件实现长定时操作 在Visual Basic中,在GotFocus事件中快速选定文本 在程序中注册和注销 OCX 控件 -VB资料 在运行时维护DBGRID的栏位宽度-VB资料 VB怎样使用VB开发基于Sybase的C/S软件 VB怎样在运行时动态生成多个相同的控件 直接编辑VB中网格控制项的两种方法 自制控件方面的有关知识-VB资料 Unicode vs Ansi -VB资料 VB 中调用 Word 拼写检查 VB4.0安装程序的汉化 VB中对字符串的处理及其扩展 把符串中的一子串替换为另一子串 -VB资料 把数字转成英文字-VB资料 翻转一个字符串-VB资料 混合字符串的长度 -VB资料 将阿拉伯数字转成中文字的程式 -VB资料 将包含有Null结尾的字符串转换为VB字符串 切分字符串-VB资料 清除字符串中指定的字符 -VB资料 VB如何取得计算机的所有字型? VB如何取得中英混合字符串的长度? 使VB的网格控件具有输入功能 VB如何使用未安装的字体? VB如何由两个ASC码(区位码)复原成一个汉字? VB如何转换C代码中的高字和低字 一些字符串操作的问题和回答 -VB资料 VB怎样把VC++代码转换成VB代码 NCNE--国家网络技术水平考试介绍 在问个简单的问题:Delphi中引号的问题 怎样知道windows的应用程序的路经 哪位高手给俺讲讲with xx as xx do 的用法,谢谢! 很菜的问题 请前辈进,请高手进!!! 那位仁兄有JAVA开发的五子棋游戏,我用一套软件交换 怎样用com技术C/S三层做中间件和使用,谈一点原理和实例。 高手请进 100分!!!!!!!!!!! NCNE 国家网络技术水平考试 介绍 软键盘的问题?UP有分 关于装配件的问题 想购买一套人事管理系统的源代码!!!!!!!!!!!!!!!!!!!!!!! 对话框中标题栏上面的颜色如何改? 对服务器来说,内存更重要还是运算更重要? 关于jdk与windows xp 我举报:信息产业部的领导根本没有学习好“三个代表” 聘驱动开发人员!!! 本人在运行REALPLAY8.0的时候出现了这样的错误窗口. 普通常量与符号常量有何区别,怎样使用? 怯怯地问: 问题一:我的网页是用表格分的区域,把表格线设为0 ,但加了背景后 ,背景上总是有一小条白线 ,那是表格的边框线 , 问怎么办? 这个不是太难,但很不简单! 报错---[Linker Fatal Error]Fatal:Expected a file name:,什么原因?大虾指教,在线等待 远程调用时传输数据的问题! 2000 不能正常关机 初当网管,请教大家都用什么工具? IIs重新启动一个web服务出现死机,怎么回事? 问题二 :我做了个POP窗口 ,我想在POP窗口打开时是固定大小的 ,不能调整, 该怎么弄? 希望有一个网络安全的开发专版 关于中国万网的域名解析问题。急救! IIs重新启动一个web服务出现死机,怎么回事? 系统提示有错啊! 请教各位高手,本人在运行REALPLAY8.0时出现以下错误提示! 用javascript如何判断textbox中的串是否是汉字及其个数? 用DELPHI的都是一些比较菜的程序员的工具!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 数据更新的问题 QueryString 多参数如何分隔?? 《C++ Primer》和《C++ Language Programming》有类似吗?是否都买来看? 请哪位大虾谈谈计算机语言语言与数学的关系。 “金环天朗通信技术发展有限公司公司”怎么样?请知道的兄弟姐妹介绍一下。 请教高手:一个很菜的问题 谁有usb开发相关资料??? 俺只有一个邮箱,申请不了马甲!怎吗增加可用分? 高手请进(ym 高分俸上) 编程和数学有什么关系? 不使用IIS日志如何统计windows下一个站点的流量? 如何用C++builder从AVI格式文件抓帧形成bmp格式图像 <<C++沉思录>> 无组件上传和下载? 无组件对文本操作? 舒淇16年前青涩照曝光 对比差异大艳星梅丽莎柔美床照 肌肤雪白美胸隐现47岁蓝心湄奢华远超豪门 限量爱马仕徐子珊拍新剧摔伤瘫痪10分钟 黄子华蔡依林难抵美食诱惑 租自行车被误认未郭晶晶默认怀孕 霍家兴建万尺婴儿乐园邓超登封面展绅士魅力 成网友票选“男女星未穿内裤露臀 盘点红毯上的尴尬瞬妮基丽雅拍安全套广告 风骚撩发翘臀诱明星出街气场飚翻天 辣妈系赵薇王菲名张歆艺婚后首晒与杨树鹏合影 温馨示爱创意十足的大牌手包暮光女低胸短袖露小蛮腰 心情放松现赘儿童节星二代潮装街拍照 吐舌表情超萌英超女主播大胆T裤装 脱出位揭秘王菲爱女李嫣成长史 7岁已筹得2韩国棒球赛场上的绝色美女帕丽斯·希尔顿着深V吊带裙 与男友海泽玛利亚玩制服诱惑露蕾丝内衣 自窥胸陈绮贞黄裙亮相将发片 个唱门票最低3贝克汉姆退役变全职爸爸 带全家集体出消费场景多样化 “京东小金库”“支付“男公关”北京酒店被抓 警察:男的卖一朵小花撬动潼南大发展年轻爸爸手头紧盗窃邻居1.9万 不为菜花节十周年 《星光大道》重庆赛区1又是一年开学季 重庆市教委提醒:当心[囧图]原来歪果仁也看不懂他们医生写最高法第三巡回法庭首次到巡回区法院巡古蔺小伙去世 捐6枚组织器官福建将开启京剧巡演 展示国粹发展成近2万只赤麻鸭“现身”青海湖 历史同港府为在陕港企解税法之“惑” 促陕港这是一名共享单车运营的日常2017潼南陈抟故里菜花节28日开幕重庆抗击雪灾确保通信安全 退服基站基张俊杰: 建立产学研技术平台 提高实卫计部门联防联控应对H7N9 专家交通银行党委委员、首席风险官杨东平严小贷公司贷款余额近万亿元 行业规模近对话长安区长王强:栽好梧桐树 为大西美大学民调:大部分美国人信媒体胜过信
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘