在数据库中如何避免死锁

SQL server多数情况下,可以认为如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去。简单的说,进程A等待进程B释放他的资源,B又等待A释放他的资源,这样就互相等待就形成死锁。如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。
在应用程序中就可以采用下面的一些方法来尽量避免死锁了:
(1)合理安排表访问顺序。
(2)在事务中尽量避免用户干预,尽量使一个事务处理的任务少些, 保持事务简短并在一个批处理中。
(3)数据访问时域离散法, 数据访问时域离散法是指在客户机/服务器结构中,采取各种控制手段控制对数据库或数据库中的对象访问时间段。主要通过以下方式实现: 合理安排后台事务的执行时间,采用工作流对后台事务进行统一管理。工作流在管理任务时,一方面限制同一类任务的线程数(往往限制为1个),防止资源过多占用; 另一方面合理安排不同任务执行时序、时间,尽量避免多个后台任务同时执行,另外, 避免在前台交易高峰时间运行后台任务。
(4)数据存储空间离散法。数据存储空间离散法是指采取各种手段,将逻辑上在一个表中的数据分散到若干离散的空间上去,以便改善对表的访问性能。主要通过以下方法实现: 第一,将大表按行或列分解为若干小表; 第二,按不同的用户群分解。
(5)使用尽可能低的隔离性级别。隔离性级别是指为保证数据库数据的完整性和一致性而使多用户事务隔离的程度,SQL92定义了4种隔离性级别:未提交读、提交读、可重复读和可串行。如果选择过高的隔离性级别,如可串行,虽然系统可以因实现更好隔离性而更大程度上保证数据的完整性和一致性,但各事务间冲突而死锁的机会大大增加,大大影响了系统性能。
(6)使用绑定连接, 绑定连接允许两个或多个事务连接共享事务和锁,而且任何一个事务连接要申请锁如同另外一个事务要申请锁一样,因此可以允许这些事务共享数据而不会有加锁的冲突。
总之,了解SQL Server的锁机制,掌握数据库锁定方法, 对一个合格的DBA来说是很重要的。
相关内容
WinXP系统本地连接没有有效的ip配置怎么办
WinXP系统本地连接没有有效的ip配置怎么办,本地连接,配置,网...
Win10远程桌面无法连接怎么修复
Win10远程桌面无法连接怎么修复,修复,无法连接,远程桌面,系统...
Win7电脑无法连接无线网络的原因和处理方法
Win7电脑无法连接无线网络的原因和处理方法,无线网络,无法连...
Win10系统下qbclient.exe进程占用大量内存怎么
Win10系统下qbclient.exe进程占用大量内存怎么办,内存,进程,...
Win7网络连接图标一直转圈的原因和解决方法
Win7网络连接图标一直转圈的原因和解决方法,原因,解决方法,网...
Win7如何通过可疑进程查杀病毒木马
Win7如何通过可疑进程查杀病毒木马,病毒木马,进程,可疑,查看,...
Win7如何彻底关闭qiyiservice.exe进程
Win7如何彻底关闭qiyiservice.exe进程,进程,窗口,属性,服务,...
Win7无法连接打印机提示错误0x00000002怎么办
Win7无法连接打印机提示错误0x00000002怎么办,错误,提示,无法...
Win7系统宽带连接出现错误1068的解决方法
Win7系统宽带连接出现错误1068的解决方法,解决方法,宽带连接,...
数据库本地连接为空白怎么办?
数据库本地连接为空白怎么办?,本地连接,数据库,注册表编辑器,...
sql2008r2数据库如何配置?
sql2008r2数据库如何配置?,配置,数据库,双击,数据库配置,管理...
Jdbc连接sql server的方法
Jdbc连接sql server的方法,连接,对话框,指令,方法,引用,点击,...
Sql server 2012如何开启远程连接
Sql server 2012如何开启远程连接,远程连接,数据库,连接,开启...
win7系统连接无线信号时提示Windows无法连接到
win7系统连接无线信号时提示Windows无法连接到路由器名称的...
SQL Server 2008数据库恢复模式有几种
SQL Server 2008数据库恢复模式有几种,恢复模式,数据库,备份,...