请问C/S信息管理系统如何处理死锁? 200分送上,请大家讨论讨论
发布时间:2011-06-23 16:01:30 文章来源:www.iduyao.cn 采编人员:星星草
请教C/S信息管理系统如何避免死锁? 200分送上,请大家讨论讨论。
c/s,sql server 2005,30多个表。访问最频繁的任务表有50多个字段,40多万记录。
以前就偶尔出现死锁错误,近期由于用户增多,死锁更是频繁的出现。 =。=
我跟踪sql,发现死锁几乎都与上述的任务表有关(select、update)。
这个表是系统的核心,几乎所有的操作都会涉及到它,肯定是无法避免多人同时对它进行访问的。
请教这情况下如何避免死锁呢?撇开这套有设计缺陷的系统,设计逻辑复杂、数据量巨大的信息系统时应如何避免死锁呢?
------------------------------------悲哀的分界线-----------------------------------------
这个系统是我的前任的前任设计开发的,他离职的时候没有留下任何系统的文档资料。
我的前任接手后,对系统进行了一年左右一系列的修修补补,系统也基本满足了公司的需要。
到我接手的时候,前任已经离职一个月,系统已经接近崩溃边缘。我的一番大修补,系统终于苟延残喘到了现在。
最近死锁的问题让我没信心医好它了=。=
------解决方案--------------------
你问下允许脏读么?
应该转到SQL区去问问用什么锁能解决你的问题。
------解决方案--------------------
select ..
from datatableName(nolock)
where...
------解决方案--------------------
with nolock
------解决方案--------------------
通过SP_lock和SP_who监视进程之间的锁争用,但是,一旦出现死锁,一个事务回退,一个事务继续。此时使用sp_lock已经看不到真正死锁的资源信息(或许能够看许多X类型的锁信息),因为所涉及资源的锁已经释放。
SQL SERVER 提供了几个跟踪标志,可以监视出现的死锁。可以用DBCC TRACEON命令打开跟踪标志,用DBCC TRACEOFF关闭跟踪标志
LZ看看这篇文章对你是否有所帮助http://www.searchdatabase.com.cn/showcontent_11201.htm
------解决方案--------------------
SqlTransaction trans = theConn.BeginTransaction(IsolationLevel.ReadCommitted);
添加锁机制
select * from t with (nolock)
http://topic.csdn.net/u/20091012/09/5fba87cb-6361-4748-ad26-53b9257f80ea.html
------解决方案--------------------
SQL Server能自动探测和处理死锁,频繁死锁说明你的程序有严重的设计问题...
1.从表中访问数据的顺序要一致,避免循环死锁...
2.减少使用holdlock或使用可重复读与可序列化锁隔离级的查询,避免转换死锁...
3.选择低事务隔离级别减少死锁...
随意地对数据库操作加锁只会让情况更加恶化,你的问题出在业务逻辑上...分析业务逻辑从用户操作流程和数据处理流程上找到死锁的原因并加以解决才是根本...
------解决方案--------------------
mark
------解决方案--------------------
1 使用事务时,尽量缩短事务的逻辑处理过程,及早提交或回滚事务; (细化处理逻辑,执行一段逻辑后便回滚或者提交,然后再执行其它逻辑,直到事物执行完毕提交)
2 设置死锁超时参数为合理范围,如:3分钟-10分种;超过时间,自动放弃本次操作,避免进程悬挂;
3 优化程序,检查并避免死锁现象出现;
4 .对所有的脚本和SP都要仔细测试,在正是版本之前。
5 所有的SP都要有错误处理(通过@error)
6 一般不要修改SQL SERVER事务的默认级别。不推荐强行加锁
------解决方案--------------------
mmark
------解决方案--------------------
mark
也认为是设计问题,不能靠强制手段处理。
------解决方案--------------------
哎,我们也遇到同样的问题了,只不过环境有一点差异,我们是c/s,sql server 2008。我也不懂如何优化。支持,帮顶!
------解决方案--------------------
说实话这个还真不太好搞
------解决方案--------------------
1.查询如果是那种非敏感数据用nolock
2.严格控制超时的处理
3.ADO中的IsolationLevel或直接SQL中控制事务的并发模式
------解决方案--------------------
重新开发一个
------解决方案--------------------
------解决方案--------------------
with nolock 这个最简单的,自己写的时候注意数据的顺序
------解决方案--------------------
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于VB.net中的验证控件
小弟正在开发一个C/S结构程序,有几个界面有较多的textbox,是关于用户数据输入的,现在想做验证,听说有验证控...
-
多表查询问题
我有三个表,一个表为基本表,一个是代码表,一个是出差表
表一 编号,姓名 ,职别
001 李三 101
...
-
DATAGRIDVIEW无法删除未提交的新行?
再DATAGRIDVIEW录入时,想删除最后自动新增的一行,提示无法删除未提交的新行
Private Sub Dat...
-
迷茫了几天,求各位高手指教一下!下面是我的代码!
<!--#include file="webconfig.asp"-->
<%
Dim SortID
SortID=Trim(FLib.SafeSql(R...
-
vb.net 断开和连接网络连接 修改代码
在vb.net中实现断开和连接网络连接的代码,我在网上找了一段代码
Option Explicit On
'首...
-
DataGridView直接导出EXCEL
如何直接读取DataGridView中的数据,并导出成Excel可以直接读取的文件
记住,我不要通过DataTable。
希...
-
求教:如何在vb.net下做一些好看的界面,整一些好看的效果,改变控件,让控件变得好看点?
有没有点例子?有没有点直接可以做控件的软件?
---...
-
在VB中,对SQL数据库进行增删改语句怎么写呢?
小弟做课程设计,遇到了一点小麻烦,卡在了这里,不知道在VB中怎么写对SQL数据库的增删改...
-
文本框中的数字精确到小数点后两位
请问如何让文本框输入数字后精确到小数点后两位,如:当输入112时,显示为112.00
------解决方案--...
-
VB.NET2008如何利用SendMessage修改按钮的Text?
为了测试 Windows API ,试图点Button用SendMessage修改该按钮的Text,竟然没成功,请教...