[oracle]TX行锁发生的常见场景(转贴)
TX行锁发生的常见场景:
1、当前会话要更新或删除的记录,已经被其他会话更新或删除。
2、对于表上有唯一索引的情况,多个会话插入或更新为相同的键值。
3、对于表上有位图索引的情况,多个会话即使更新不同记录,只要这些记录在位图索引上的键值相同,也会产生行锁。
1、当前会话要更新或删除的记录,已经被其他会话更新或删除。
2、对于表上有唯一索引的情况,多个会话插入或更新为相同的键值。
3、对于表上有位图索引的情况,多个会话即使更新不同记录,只要这些记录在位图索引上的键值相同,也会产生行锁。
一般我们可能认为在发生行锁的时候,几个SQL的语句是一样的,事实上这种理解是错误的。我举一个简单的例子:
首先在表上找到job为manager的记录,有三条:
select empno from emp where job='MANAGER';
--显示7566/7698/ 7782 三条记录。
之后在会话1 将部门ID为10的员工的记录删除掉
sess1:delete from emp where deptno=10;
-- 7782/7839/ 7934 三条记录被删除,但并未提交。其中7782的记录刚好是job为manager的。
接下来在session2做一个delete的操作,此时就会被hang住。
sess2:delete from empwherejob='MANAGER';
那么hang的情况说明时候会结束呢?
--if sess 1 rollback, 7566/ 7698/7782将被删除
--if sess 1 commit, 7566/ 7698将被删除
也就是说只有资源被释放,系统才会解除TX行锁。
转贴自:http://www.sohu.com/a/207720182_505827
最新文章
- python版本升级
- Unity3D–RectTransfrom 记录笔记
- 【noiOJ】p6253
- C++ 记事本: 从历史说起
- access-Control-Allow-Origin跨域请求安全隐患
- Objective C 基础
- JSON序列化和反序列化
- (int)、(int&;)和(int*)的区别(转)
- 函数page_cur_search_with_match
- 解决Dagger2和butterknife冲突
- BZOJ 1828: [Usaco2010 Mar]balloc 农场分配
- [topcoder]CorrectMultiplicationTwo
- (转载)Linux一句话精彩
- Linux学习笔记12——Unix中的进程
- Tomcat详细用法学习(三)
- ajax+jsp实现三级联动下拉框
- Spring【AOP】
- cookie 详解 与 封装 实用的cookie
- 7.nginx伪静态规则
- JavaScript基础知识(概念、常量和变量)
热门文章
- day12-python之深灰魔法
- 怎么读取properties文件和ini文件?
- 【OGG 故障处理】 丢失归档恢复
- Java学习第四天之标识符与关键字
- 【问题】redhat安装dig
- java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present
- Python 之 PyMySQL 安装和使用
- js 获取扫码枪信息
- 根据IP获取经纬度 js
- 003-官网安装openstack之-keystone身份认证服务