CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

死锁问题

楼主stweiguo(真水先生)2005-01-09 10:58:39 在 MS-SQL Server / 基础类 提问

三层结构,数据库采用MS-SQL,应用端和客户端delphi6开发  
  当客户端有五个人以上在操作时(只有查询和修改两个动作),经常会保存失败,  
  数据库才两万多条记录.  
  当出现保存失败的时候在查询分析器里运行简单的一个查询(只查一条记录),  
  则会出现1205的错误.  
  检查数据库服务器的CPU运行正常,内存也正常,程序中控制一条记录不同时被两个用户读取。  
   
  可否通过设置SQL来减少死锁情况的发生. 问题点数:20、回复次数:4Top

1 楼hdhai9451(☆新人类☆)回复于 2005-01-09 11:06:18 得分 5

exec   sp_lockTop

2 楼huangweizhao(小菜鸟)回复于 2005-01-09 11:07:19 得分 0

应该可以,sql   server有串行化功能。Top

3 楼stweiguo(真水先生)回复于 2005-01-09 13:02:26 得分 0

set_locktimeout   set   1000  
  试过多个时间,不是很理想Top

4 楼mschen(Co-ok)回复于 2005-01-09 13:21:40 得分 15

可能是你的事务隔离级别设置的太高了或者是应用程序对表的访问有些不合理导致了死锁的发生.  
   
  如何来避免死锁的发生.  
   
  (1)合理安排表访问顺序。    
  (2)在事务中尽量避免用户干预,尽量使一个事务处理的任务少些,   保持事务简短并在一个批处理中。    
  (3)数据访问时域离散法,   数据访问时域离散法是指在客户机/服务器结构中,采取各种控制手段控制对数据库或数据库中的对象访问时间段。主要通过以下方式实现:   合理安排后台事务的执行时间,采用工作流对后台事务进行统一管理。工作流在管理任务时,一方面限制同一类任务的线程数(往往限制为1个),防止资源过多占用;   另一方面合理安排不同任务执行时序、时间,尽量避免多个后台任务同时执行,另外,   避免在前台交易高峰时间运行后台任务。    
  (4)数据存储空间离散法。数据存储空间离散法是指采取各种手段,将逻辑上在一个表中的数据分散到若干离散的空间上去,以便改善对表的访问性能。主要通过以下方法实现:   第一,将大表按行或列分解为若干小表;   第二,按不同的用户群分解。    
  (5)使用尽可能低的隔离性级别。隔离性级别是指为保证数据库数据的完整性和一致性而使多用户事务隔离的程度,SQL92定义了4种隔离性级别:未提交读、提交读、可重复读和可串行。如果选择过高的隔离性级别,如可串行,虽然系统可以因实现更好隔离性而更大程度上保证数据的完整性和一致性,但各事务间冲突而死锁的机会大大增加,大大影响了系统性能。    
  (6)使用绑定连接,     绑定连接允许两个或多个事务连接共享事务和锁,而且任何一个事务连接要申请锁如同另外一个事务要申请锁一样,因此可以允许这些事务共享数据而不会有加锁的冲突。Top

相关问题

  • 死锁
  • 死锁问题
  • 死锁问题
  • 死锁问题
  • 线程死锁
  • 求救,死锁.
  • 死锁问题!!!
  • Runtime.exec() 死锁?
  • ORACLE死锁问题!!
  • 死锁的问题

关键词

  • 数据库
  • 数据
  • 连接
  • 用户
  • 控制
  • sql
  • 死锁
  • 事务
  • 表
  • 离散

得分解答快速导航

  • 帖主:stweiguo
  • hdhai9451
  • mschen

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo