具体数据库是这样设计的:
订单表:订单号,字段1,字段1,字段1,字段1,字段1,字段1,字段1,......定位
订单号为主键!
流程表:
流程定义ID,流程名
时间表:
订单号,流程定义ID,计划时间,完成时间
所有的用户更新定位字段时都是通过调用一个存储过程来进行的!
这个存储过程中有事务!
BEGIN TRANSACTION
update 订单表 set 定位='用户位置' where key='@订单号‘
--检查其它数据,并且做一些插入和更新记录表的
if 记录在时间表中存在
update 时间表 set 计划时间=@date1,完成时间=null where 订单号=@订单号 ,流程定义 id=@流程定义ID
else
插入到时间表一条记录COMMIT TRANSACTION
现在我分析可能是多用户同时更新数据时,造成了锁定从而引起了阴塞!
各位帮我分析分析吧!
订单表:订单号,字段1,字段1,字段1,字段1,字段1,字段1,字段1,......定位
订单号为主键!
流程表:
流程定义ID,流程名
时间表:
订单号,流程定义ID,计划时间,完成时间
所有的用户更新定位字段时都是通过调用一个存储过程来进行的!
这个存储过程中有事务!
BEGIN TRANSACTION
update 订单表 set 定位='用户位置' where key='@订单号‘
--检查其它数据,并且做一些插入和更新记录表的
if 记录在时间表中存在
update 时间表 set 计划时间=@date1,完成时间=null where 订单号=@订单号 ,流程定义 id=@流程定义ID
else
插入到时间表一条记录COMMIT TRANSACTION
现在我分析可能是多用户同时更新数据时,造成了锁定从而引起了阴塞!
各位帮我分析分析吧!
解决方案 »
- 分组并分页问题
- 还没解决完搜索存储过程
- 紧急求救,数据库无法附加,错误823!
- SQL Server2008与2012在T-SQL的写法上有哪些新特性
- 求trigger!谢过!
- 我想向SQLSERVER里面插入这段字符怎样办,系统给我把非法符号自动屏蔽了?另外在asp里面也有此题,回答完了请到SQL栏里回答,我将一同给
- 请教大家一个问题?谢谢,在线等!!
- 求救!!!sql server使用链接服务器删除Oracle的数据表的数据时异常
- 给一个在存储过程中分页的示例吧(asp or asp.net)
- 如何用VB建一个数据库和表呀.(VB+SQL20000)
- sqlserver2000安装程序配置服务器失败,急用。。。。。
- 关于几点优化经验的问题,我想不痛为什么,请高手举例论证此观点,谢谢~
1、你的存储过程使用的是自动锁,不是行锁或者页锁啊
请问一下,存储过程中怎么使用行锁?
2、
存储过程中
--检查其它数据,并且做一些插入和更新记录表的如果这个处理量较大的话,尽量不要在同一个事务中处理
是改成嵌套的事务吗?
非常感谢zjcxc(邹建),你真是一个好版主!
帮帮我吧,不然我要去跳楼啦!
exec sp_indexoption '订单表','allowpagelocks','false'
exec sp_indexoption '时间表','allowpagelocks','false'如果在存储过程中用行锁是加 with ROWLOCK吗?
怎么加呢?
在存储过程中加入 waitfor delay延时BEGIN TRANSACTION
update 订单表 set 定位='用户位置' where key='@订单号‘
--检查其它数据,并且做一些插入和更新记录表的
if 记录在时间表中存在
update 时间表 set 计划时间=@date1,完成时间=null where 订单号=@订单号 ,流程定义 id=@流程定义ID
else
插入到时间表一条记录
waitfor delay '00:05:00' --延时5分钟
commit tran
--调用存储过程,然后在存储过程外面随便查询一个没有锁定的订单号,如果可能查出,证明行级锁生效,否则表示行级锁无效
加上此语句后,查询其他订单没有问题!而且在五分钟内查询锁定的订单也没有问题!
调试后证明行级锁生效!
另外请问:
如果这个处理量较大的话,尽量不要在同一个事务中处理,这个怎么处理呢?
waitfor delay '00:05:00' --延时5分钟
加上此语句后,在客户端执行此存储过程后引起一个超时错误,但其他客户的查询没有影响!
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
用sp_lock查看,发现出现四五个阻塞,都是与订单表和时间表有关的!请问 zjcxc(邹建),怎么改用行级锁才能生效!
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=207166