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

最新文章

  1. python版本升级
  2. Unity3D–RectTransfrom 记录笔记
  3. 【noiOJ】p6253
  4. C++ 记事本: 从历史说起
  5. access-Control-Allow-Origin跨域请求安全隐患
  6. Objective C 基础
  7. JSON序列化和反序列化
  8. (int)、(int&)和(int*)的区别(转)
  9. 函数page_cur_search_with_match
  10. 解决Dagger2和butterknife冲突
  11. BZOJ 1828: [Usaco2010 Mar]balloc 农场分配
  12. [topcoder]CorrectMultiplicationTwo
  13. (转载)Linux一句话精彩
  14. Linux学习笔记12——Unix中的进程
  15. Tomcat详细用法学习(三)
  16. ajax+jsp实现三级联动下拉框
  17. Spring【AOP】
  18. cookie 详解 与 封装 实用的cookie
  19. 7.nginx伪静态规则
  20. JavaScript基础知识(概念、常量和变量)

热门文章

  1. day12-python之深灰魔法
  2. 怎么读取properties文件和ini文件?
  3. 【OGG 故障处理】 丢失归档恢复
  4. Java学习第四天之标识符与关键字
  5. 【问题】redhat安装dig
  6. java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present
  7. Python 之 PyMySQL 安装和使用
  8. js 获取扫码枪信息
  9. 根据IP获取经纬度 js
  10. 003-官网安装openstack之-keystone身份认证服务