oracle的commit就是提交数据(这里是释放锁不是锁表),在未提交前你前面的操作更新的都是内存,没有更新到物理文件中。
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的鹿邑网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
执行commit从用户角度讲就是更新到物理文件了,事实上commit时还没有写date file,而是记录了redo log file,要从内存写到data物理文件,需要触发检查点,由DBWR这个后台进程来写,这里内容有点多的,如果不深究的话你就理解成commit即为从内存更新到物理文件。
锁有很多种,一般我们关注的都是DML操作产生的,比如insert,delete,update,select...for update都会同时触发表级锁和行级锁
补充:对的,insert以后commit之前是锁表的状态,其他事务无法对该表进行操作。
显式提交和隐式提交
显式提交,比如出现commit,这类的就是显式提交。
隐式提交是不用写commit的提交,比如alter语句的提交。
1.自治事务是独立于父级事务的,
2.你的程序运行过程就可看出来,两个事务是同级的完整的,即在p1中将p2之前的修改语句提交了,所以Rollback不会对以提交的事务就行回滚,因为undo 段里已经没有undo 信息了
重新启动时,系统先REDO,然后对未提交的UNDO,数据在更新前的状态