18 个解决方案
#1
阻塞一般不会被自动处理,死锁通常sqlserver会处理,不过不是所有死锁都会
#2
你要分析哪个才是源头,乱kill危险更大
#3
#4
update 表 set bz=1 where id in(''234','2343','333','45')
多个客户同时操作上面语句会阻塞吗?id都不相同,并且id为主键,表中数据100万条。
多个客户同时操作上面语句会阻塞吗?id都不相同,并且id为主键,表中数据100万条。
#5
100万数据,如果索引不高效,会阻塞,因为可能会锁住一片的数据,不仅仅锁住自己那部分,然后刚好第二个客户要update这部分的数据时,就出现阻塞了。这个可能原因很多,不能简单说会还是不会,只能说“可能”
#6
那么这种阻塞会持续很长时间吗?1分钟2分钟还是5分钟?是不是过一会就全都通过了?
#7
没有标准,比如平时可能阻塞1分钟,但是由于没有对索引维护,导致碎片很多,那么会越来越慢,我给你的联接里面你看看能不能用于侦测你的问题
#8
令外我的数据库中id是数值型的,我的update语句中是用单引号的,有没有影响?
#9
有,类型不等会出现隐式转换,使得索引无效,然后每次查询都是全表扫描,也大大地增大了阻塞的可能性。
#10
阻塞会一直等待,死锁有一个会被当作牺牲品Kill掉。
#11
会
这几条记录可能位于同一页面或几个页面
会在这个页面都申请意向排他锁
#12
如果阻塞的话,其它客户向这个表插入数据,可以么?
#13
也有可能堵塞
1)插入到其它事务已经获取锁的页面时候会堵塞
2)其它事务使用了序列化的隔离级别,不允许幻读
#14
SET LOCK_TIMEOUT
把这个语句放到应用程序里是否可行,当有阻塞超时就自动关闭。
把这个语句放到应用程序里是否可行,当有阻塞超时就自动关闭。
#15
我建议你找到问题的根源,而不是用一些手段去暴力处理
#16
谢谢!
还有我想问一下版主
update 表 set 列1='a',列2='sdf',列3='sdfsdf' where 列4=1 and 列5=’sdf‘ and列6 =234 and 列7=1
这个语句如果wher子句条件太多是不是比1个条件的要锁更多的行?
还有我想问一下版主
update 表 set 列1='a',列2='sdf',列3='sdfsdf' where 列4=1 and 列5=’sdf‘ and列6 =234 and 列7=1
这个语句如果wher子句条件太多是不是比1个条件的要锁更多的行?
#17
谢谢!
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?
#18
谢谢!
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?
#1
阻塞一般不会被自动处理,死锁通常sqlserver会处理,不过不是所有死锁都会
#2
你要分析哪个才是源头,乱kill危险更大
#3
我有几篇文章你看看:
http://blog.csdn.net/dba_huangzj/article/details/8697600
http://blog.csdn.net/dba_huangzj/article/details/8697578
http://blog.csdn.net/dba_huangzj/article/details/8697555
http://blog.csdn.net/dba_huangzj/article/details/8697578
http://blog.csdn.net/dba_huangzj/article/details/8697555
#4
update 表 set bz=1 where id in(''234','2343','333','45')
多个客户同时操作上面语句会阻塞吗?id都不相同,并且id为主键,表中数据100万条。
多个客户同时操作上面语句会阻塞吗?id都不相同,并且id为主键,表中数据100万条。
#5
100万数据,如果索引不高效,会阻塞,因为可能会锁住一片的数据,不仅仅锁住自己那部分,然后刚好第二个客户要update这部分的数据时,就出现阻塞了。这个可能原因很多,不能简单说会还是不会,只能说“可能”
#6
那么这种阻塞会持续很长时间吗?1分钟2分钟还是5分钟?是不是过一会就全都通过了?
#7
没有标准,比如平时可能阻塞1分钟,但是由于没有对索引维护,导致碎片很多,那么会越来越慢,我给你的联接里面你看看能不能用于侦测你的问题
#8
令外我的数据库中id是数值型的,我的update语句中是用单引号的,有没有影响?
#9
有,类型不等会出现隐式转换,使得索引无效,然后每次查询都是全表扫描,也大大地增大了阻塞的可能性。
#10
阻塞会一直等待,死锁有一个会被当作牺牲品Kill掉。
#11
会
这几条记录可能位于同一页面或几个页面
会在这个页面都申请意向排他锁
#12
如果阻塞的话,其它客户向这个表插入数据,可以么?
#13
也有可能堵塞
1)插入到其它事务已经获取锁的页面时候会堵塞
2)其它事务使用了序列化的隔离级别,不允许幻读
#14
SET LOCK_TIMEOUT
把这个语句放到应用程序里是否可行,当有阻塞超时就自动关闭。
把这个语句放到应用程序里是否可行,当有阻塞超时就自动关闭。
#15
我建议你找到问题的根源,而不是用一些手段去暴力处理
#16
谢谢!
还有我想问一下版主
update 表 set 列1='a',列2='sdf',列3='sdfsdf' where 列4=1 and 列5=’sdf‘ and列6 =234 and 列7=1
这个语句如果wher子句条件太多是不是比1个条件的要锁更多的行?
还有我想问一下版主
update 表 set 列1='a',列2='sdf',列3='sdfsdf' where 列4=1 and 列5=’sdf‘ and列6 =234 and 列7=1
这个语句如果wher子句条件太多是不是比1个条件的要锁更多的行?
#17
谢谢!
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?
#18
谢谢!
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?
还有我想问一下版主
update biao set lie1=1,lie2='24234' where lie4=1 and lie5='asf' and lie6=234 and lie7='ss'
这种如果where子句条件太多是不是比where子句只有一个条件的,会锁更多的行?