• 技术文章 >数据库 >mysql教程

    关于“ORA-00060:等待资源时检测到死锁”问题的分析

    2016-06-07 17:09:15原创1820

    最近现场反馈问题:一个访问oracle数据库的通讯程序记录了一些关于ldquo;ORA-00060:等待资源时检测到死锁rdquo;的错误日志。但

    最近现场反馈问题:一个访问Oracle数据库的通讯程序记录了一些关于“ORA-00060:等待资源时检测到死锁”的错误日志。但通讯程序记录异常后并没有崩溃,还能继续运行,并且通讯数据看起来也很正常。

    其实,鉴于数据库是存在大量并发访问的,只要存在并发访问,死锁就无法彻底避免,无非是几率大小而已。oracle数据库有检测当前会话死锁的功能,当死锁发生时,两个或多个并发事务相互等待,不靠外力就再也无法继续执行完了。数据库检测到死锁时,就会将死锁的各个事务回滚,并抛出ORA-00060异常。所以我们访问数据的程序,特别是无人值守的程序,一定要能处理此异常,在数据库发生这个异常之后,将其记录在日志中,并继续(重新)执行访问数据库的操作。

    当然,我们还可以通过改进程序的效率来减少死锁发生的几率。首先可以提供数据库访问效率,优化数据库,优化sql,尽量减少访问数据库的时间,从而降低与其他会话并发死锁的可能性。另外,在业务允许的情况下,,应尽可能减少数据库事务的范围,将一个大的事务,分成小的事务,尽早提交。当然,事务的划分这是由业务决定的,不可能随便分开。

    linux

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:搭建MongoDB集群 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • MySQL的数据目录(整理总结)• 一文详解MySQL设置only_full_group_by报错问题• 一文来聊一聊MySQL HeatWave• 一文聊聊MySQL中的插入意向锁(Insert Intention Lock)• 教你通过物理方式使MySQL恢复单表
    1/1

    PHP中文网