ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于死锁的一点探讨

关于死锁的一点探讨

原创 Linux操作系统 作者:杨奇龙 时间:2010-04-27 22:48:29 0 删除 编辑
死锁主要是要从应用的层面来避免。
死锁时ORACLE会结束掉其中的一个session来释放锁,此session的未完成事务将会被回滚。对于数据库来讲,没有什么影响,但是对应应用来讲,需要考虑重新做回滚的操作。
 

在应用程序中就可以采用下面的一些方法来避免死锁:

(1)合理安排表访问顺序。

(2)在事务中尽量避免用户干预,尽量使一个事务处理的任务少些, 保持事务简短并在一个批处理中。

(3)数据访问时域离散法, 数据访问时域离散法是指在客户机/服务器结构中,采取各种控制手段控制对数据库或数据库中的对象访问时间段。主要通过以下方式实现: 合理安排后台事务的执行时间,采用工作流对后台事务进行统一管理。工作流在管理任务时,一方面限制同一类任务的线程数(往往限制为1个),防止资源过多占用; 另一方面合理安排不同任务执行时序、时间,尽量避免多个后台任务同时执行,另外, 避免在前台交易高峰时间运行后台任务。

(4)数据存储空间离散法。数据存储空间离散法是指采取各种手段,将逻辑上在一个表中的数据分散到若干离散的空间上去,以便改善对表的访问性能。主要通过以下方法实现: 第一,将大表按行或列分解为若干小表; 第二,按不同的用户群分解。

(5)使用尽可能低的隔离性级别。隔离性级别是指为保证数据库数据的完整性和一致性而使多用户事务隔离的程度,SQL92定义了4种隔离性级别:未提交读、提交读、可重复读和可串行。如果选择过高的隔离性级别,如可串行,虽然系统可以因实现更好隔离性而更大程度上保证数据的完整性和一致性,但各事务间冲突而死锁的机会大大增加,大大影响了系统性能。

(6)使用绑定连接, 绑定连接允许两个或多个事务连接共享事务和锁,而且任何一个事务连接要申请锁如同另外一个事务要申请锁一样,因此可以允许这些事务共享数据而不会有加锁的冲突。

参考资料:http://database.ccidnet.com/art/1105/20070812/1174549_1.html

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22664653/viewspace-660939/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
MySQL DBA NoSQL DEVOPS

注册时间:2009-10-07

  • 博文量
    1026
  • 访问量
    8206047