oracle的commit等于锁表么
答案:2 悬赏:60 手机版
解决时间 2021-03-15 11:48
- 提问者网友:你挡着我发光了
- 2021-03-14 12:39
oracle的commit等于锁表么
最佳答案
- 五星知识达人网友:逐風
- 2021-03-14 13:32
oracle的commit就是提交数据(这里是释放锁不是锁表),在未提交前你前面的操作更新的都是内存,没有更新到物理文件中.
执行commit从用户角度讲就是更新到物理文件了,事实上commit时还没有写date file,而是记录了redo log file,要从内存写到data物理文件,需要触发检查点,由DBWR这个后台进程来写,这里内容有点多的,如果不深究的话你就理解成commit即为从内存更新到物理文件.
锁有很多种,一般我们关注的都是DML操作产生的,比如insert,delete,update,select...for update都会同时触发表级锁和行级锁
补充:对的,insert以后commit之前是锁表的状态,其他事务无法对该表进行操作.
执行commit从用户角度讲就是更新到物理文件了,事实上commit时还没有写date file,而是记录了redo log file,要从内存写到data物理文件,需要触发检查点,由DBWR这个后台进程来写,这里内容有点多的,如果不深究的话你就理解成commit即为从内存更新到物理文件.
锁有很多种,一般我们关注的都是DML操作产生的,比如insert,delete,update,select...for update都会同时触发表级锁和行级锁
补充:对的,insert以后commit之前是锁表的状态,其他事务无法对该表进行操作.
全部回答
- 1楼网友:平生事
- 2021-03-14 14:27
update c_table c set c.name1= c.name2 where c.name2 is not null and rownum <= 3000;
你的条件,c.name2 is not null ,所能查询出的数据始终没变,再加上rownum <= 3000,也是结果始终未变,要么第二次查询3000-6000,或者查询的字段name2发生变化,使得数据查询结果变化。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯