DB commit influence

本文探讨了在PLSQL环境中,Oracle数据库的事务管理机制,包括insert操作在commit前后的状态变化,Buffercache的角色,以及commit操作的具体流程。文章详细解释了在不同情况下,如关闭PLSQL或执行rollback,对未提交数据的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.insert后未commit,关掉plsql重新打开,查询插入的内容是插入成功的

2.insert后未commit,查询插入的内容是存在的,rollback后插入内容消失

3.insert后未commit,查询插入的内容是不存在的,可以查到僵死的记录,关掉plsql(保存都选no),僵死记录消失

修改是针对的Buffer cache,在Buffer cache修改完毕,修改就算完成了。但是事务还没有结束,要到提交时。
修改过的数据,当然是先放在Buffer cache中。而且,在块被修改的同时,块被加进检查点队列中,有可能在发生检查点后,被写进数据文件。
所以,修改过的数据,有可能是在Buffer cache中,也有可能已经被写进了数据文件


所谓的buffer其实就是数据文件的临时存放数据的地方,写入buffer就等于写入数据文件了。
我这里说的内存不是指buffer。

commit触发的操作大致三点:1是生成SCN号。2.释放相关锁。3是将log buff内涉及到此次delete操作还未来得及写入redo日志的信息全部写入到redo日志里,log buff一般都不大,默认好像是40MB?再考虑到strand,写入速度很快。所以commit操作非常快。当然commit还是需要时间的,如果commit的过程中数据挂掉了怎么办?所以oracle采用的是日志在先,所有的操作都是先将涉及到的数据块和undo信息组合成redo信息写入到log buff内的。修改数据的操作在你未进行commit的时候就已经做了,只等着你commit确定此次更改了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值