【DB笔试面试659】在Oracle中,SELECT ... FOR UPDATE加的是什么锁?
16lz
2021-04-15
♣
题目 部分
在Oracle中,SELECT ... FOR UPDATE加的是什么锁?
♣
答案部分
SELECT ... FOR UPDATE语句的语法如下:
1SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];
其中,这个OF子句在涉及到多个表时,具有较大作用。若不使用OF指定锁定的表的列,则所有表的相关行均被锁定。若在OF中指定了需修改的列,则只有与这些列相关的表的行才会被锁定。WAIT子句指定等待其他用户释放锁的秒数,防止无限期的等待。
“使用FOR UPDATE WAIT”子句的优点如下:
① 防止无限期地等待被锁定的行
② 允许应用程序中对锁的等待时间进行更多的控制
③ 对于交互式应用程序非常有用,因为这些用户不能等待不确定的时间
④ 若使用了SKIP LOCKED,则可以越过锁定的行,不会报告由wait n引发的“资源忙”异常报告
在Oracle 10g之前,SELECT ... FOR UPDATE获取的是2级TM锁,而从Oracle 10g开始,SELECT ... FOR UPDATE获取的是3级TM锁。
©著作权归作者所有:来自51CTO博客作者小麦苗DB宝的原创作品,如需转载,请注明出处,否则将追究法律责任更多相关文章
- 教你如何在 Linux 中锁定和解锁多个用户
- MySQL 查询语句执行顺序以及On与Where条件过滤的区别
- 运维少年系列 python and cisco (4)
- 一句话锁定MySQL数据占用元凶
- Android(安卓)SurfaceHolder处理SurfaceView的画图
- Android(安卓)SQLite数据库使用INTO子句创建新表时报错
- sqlite使用
- Android判断当前是否处于屏幕锁定状态
- android操作SQLite