免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5387 | 回复: 30
打印 上一主题 下一主题

deadlock问题,请进=> [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-11 15:09 |只看该作者 |倒序浏览
程序中比较多的时候返回下列错误(Sybase 11.51):
Your sever command(family id #0, process id #23) was deadlocked with another process and has been chosen as deadlock victim.Re-run your command.
请帮忙看一下,多谢了!

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
2 [报告]
发表于 2005-05-11 15:18 |只看该作者

deadlock问题,请进=>

sp_configure "print deadlock information",1
设置打开,在sybase的log里能看到具体死锁的语句,再分析、
不过好像对性能影响大,在生产环境要小心。

论坛徽章:
0
3 [报告]
发表于 2005-05-11 17:54 |只看该作者

deadlock问题,请进=>

多谢了,还有没有不影响生产环境但又能看到死锁语句的措施?
我的程序客户端一多(都是用同一模块中的同一操作),就容易发生死锁,通过查询master..sysprocesses看了一下,都是程序中使用了事务所致,这个事务中先后往两个表中插入(Insert)数据和更新(Update)另外一个表的数据,死锁的表就是先插入的那个表。

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
4 [报告]
发表于 2005-05-11 20:37 |只看该作者

deadlock问题,请进=>

能写一下表的结构和索引,以及insert和update的语句吗?
好像不应该死锁呀

论坛徽章:
0
5 [报告]
发表于 2005-05-12 10:19 |只看该作者

deadlock问题,请进=>

I guess you're using the page level locking, and last page is the bottle neck.
Please create clustered index or partition your table

论坛徽章:
0
6 [报告]
发表于 2005-05-12 14:47 |只看该作者

deadlock问题,请进=>

好的,谢谢版主 & 2BeSybPro!
Insert的两个表的结构:
1、RCD_CKTD:出库单头表,存放出库单表头的信息
create table dbo.RCD_CKTD (
CKDH    char(10)    not null,
SYGSBM  char(10)    not null,
CKRQ    datetime    not null,
ZDRQ    datetime    not null,
THDW    char(20)    not null,
FYR char(13)    null,
THDJ    char(1) not null,
DJH char(10)    not null,
CH  char( null,
THR char( null,
ZDR char(14)    null,
ZFBZ    char(1) DEFAULT    '0'          not null,
ZFSJ    datetime    null,
DYZPH   char(10)    null,
BZ  varchar(100)    null,
KQDBKRKDBZ  char(1) DEFAULT   '0'       null,
constraint PCD_CKTD_12055793331 PRIMARY KEY  CLUSTERED ( CKDH)
)
on 'default'
go

print   'idx_cdtd_ckrq'
create nonclustered index idx_cdtd_ckrq
on dbo.RCD_CKTD (CKRQ)
on 'default'

另外,该表的唯一一致性的列为CKDH。

2、RCD_CKDZB:出库单子表,存放出库单明细信息
create table dbo.RCD_CKDZB (
CKDH    char(10)    not null,
XH  int not null,
YL  char(5) not null,
YPBM    char(16)    not null,
LCBM    char(10)    not null,
PPBM    char(10)    null,
GGXHBM  char(6) null,
JLDWBM  char(6) not null,
GJHSXS  numeric(16, 10) not null,
SL  numeric(16, 6)  not null,
SLD numeric(16, 6)  not null,
constraint RCD_CKDZB_4501006441 PRIMARY KEY  CLUSTERED ( CKDH,XH)
)
on 'default'

print   'idx_cdzb_yplcppggdw'
create nonclustered index idx_cdzb_yplcppggdw
on dbo.RCD_CKDZB (YPBM, LCBM, PPBM, GGXHBM, JLDWBM)
on 'default'

另外,该表的唯一一致性的列为CKDH、XH。

Update的表的结构:
1、RCD_THDTB:提货单头表,存放提货单表头的信息
create table dbo.RCD_THDTB (
THDH    char(10)    not null,
SYGSBM  char(10)    not null,
THRQ    datetime    not null,
ZDRQ    datetime    not null,
CYYK    char(10)    null,
DJLX    char(2) not null,
XSXZ    char(1) null,
ZDR char(14)    null,
YWY char(14)    null,
THQX    int null,
BZ  varchar(100)    null,
PSBZ    char(1) DEFAULT     '0'             not null,
KHBM    char(20)    null,
TWBZ    char(1) DEFAULT     '0'             not null,
ZFBZ    char(1) DEFAULT     '0'             not null,
ZFSJ    datetime    null,
DYZPH   char(10)    null,
FPH char(12)    null,
YKBZ    char(1) DEFAULT    '0'          null,
CFBZ    char(1) DEFAULT    '0'          null,
HTBH    char(10)    null,
constraint RCD_THDTB_10935789341 PRIMARY KEY  CLUSTERED ( THDH)
)
on 'default'
go

print   'idx_thdtb_thrq'
create nonclustered index idx_thdtb_thrq
on dbo.RCD_THDTB (THRQ)
on 'default'

另外,该表的唯一一致性的列为THDH。

2、RCD_THDZB:提货单子表,存放提货单明细信息
create table dbo.RCD_THDZB (
THDH    char(10)    not null,
XH  int not null,
YL  char(5) not null,
YPBM    char(16)    not null,
LCBM    char(10)    not null,
PPBM    char(10)    null,
GGXHBM  char(6) null,
JLDWBM  char(6) not null,
GJHSXS  numeric(16, 10) not null,
SL  numeric(16, 6)  not null,
DJ  numeric(16, 10) null,
JE  numeric(16, 2)  null,
SLD numeric(16, 6)  not null,
YTSL    numeric(16, 6)  null,
JSBZ    char(1) DEFAULT          '0'                            null,
HKJE    numeric(10, 2)  null,
YKSL    numeric(16, 6)  DEFAULT     0           null,
constraint RCD_THDZB_3617683461 PRIMARY KEY  CLUSTERED ( THDH,XH)
)
on 'default'
go

print   'idx_thdzb_yplcppggdw'
create nonclustered index idx_thdzb_yplcppggdw
on dbo.RCD_THDZB (YPBM, LCBM, PPBM, GGXHBM, JLDWBM)
on 'default'

另外,该表的唯一一致性的列为THDH、XH。

Insert表的顺序及SQL:
INSERT INTO RCD_CKTD(CKDH,SYGSBM,CKRQ,ZDRQ,THDW,FYR,THDJ,DJH,CH,THR,ZDR,ZFBZ,ZFSJ,DYZPH,BZ)
  VALUES('0500005330','0103101001','2005-05-10','2005-05-10 9:38:37','01031010060000000001','','2','0500006213','','','01031010010001','0',null,'','')
  
INSERT INTO RCD_CKDZB( CKDH, XH,YL,YPBM,LCBM,PPBM,GGXHBM,JLDWBM,GJHSXS,SL,SLD)
  VALUES('0500005330',1,'04001','04001010101','0000000002','0000000002','000038','000002',3.5,1,0.003500)  
INSERT INTO RCD_CKDZB( CKDH, XH,YL,YPBM,LCBM,PPBM,GGXHBM,JLDWBM,GJHSXS,SL,SLD)
  VALUES('0500005330',2,'04001','04001010102','0000000002','0000000002','000038','000002',3.5,3,1.05)   
插入RCD_CKDZB的类似语句最多有5个

Update标的顺序及SQL:
UPDATE RCD_THDZB SET YTSL=ISNULL(YTSL,0)+1 WHERE THDH='0500006213' AND XH=1
UPDATE RCD_THDTB SET TWBZ='1' WHERE THDH='0500006213' AND (SELECT SUM(ISNULL(YTSL,0))-SUM(ISNULL(SL,0)) FROM RCD_THDZB WHERE THDH='0500006213' )=0

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
7 [报告]
发表于 2005-05-12 21:43 |只看该作者

deadlock问题,请进=>

死锁在那个表上?

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
8 [报告]
发表于 2005-05-12 22:07 |只看该作者

deadlock问题,请进=>

似乎update RCD_THDZB 好像有点问题?
THDH='0500006213' AND XH=1
实际执行的时候,0500006213 和1是变量还是常量,特别是xh是怎么赋值的?
同时执行的两个进程的XH和THDH是一样的吗?

论坛徽章:
0
9 [报告]
发表于 2005-05-13 09:06 |只看该作者

deadlock问题,请进=>

死锁在那个表上,还需要确认一下,当时未曾查看。

论坛徽章:
0
10 [报告]
发表于 2005-05-13 10:44 |只看该作者

deadlock问题,请进=>

to 版主:
似乎update RCD_THDZB 好像有点问题?
>;>;可能什么问题?
THDH='0500006213' AND XH=1
实际执行的时候,0500006213 和1是变量还是常量,特别是xh是怎么赋值的?
>;>;实际执行的时候,0500006213 和1是常量,都是生成sql后执行的,例如上面的例子:
UPDATE RCD_THDZB SET YTSL=ISNULL(YTSL,0)+1 WHERE THDH='0500006213' AND XH=1
同时执行的两个进程的XH和THDH是一样的吗?
>;>;THDH不一样,它是主键,但不同的THDH中XH可能一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP