暂无图片
分享
宋化鑫
2020-02-20
Oracle 一次写操作会访问几次内存和磁盘。
暂无图片 5M

Oracle 数据库在写入一条数据时,会有几次对内存和磁盘的访问。
在内存中访问的是哪个组件。
最好能描述一下数据库的写入过程。

这个问题一直没想明白,望大家能予以解答,感谢!

收藏
分享
3条回答
默认
最新
执剑者

1、执行dml操作,事务开始;

2、在buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中;

3、事务修改buffer cache的数据块,该数据被标识为“脏数据”,并被写入log buffer中;

4、事务提交,LGWR进程将log buffer中的“脏数据”写入redo log file中;

5、当发生checkpoint,CKPT进程更新所有数据文件的文件头中的信息,DBWn进程则负责将Buffer Cache中的脏数据写入到数据文件中。

暂无图片 评论
暂无图片 有用 0
宋化鑫

那么访问内存的和磁盘的次数呢?
比如在执行一条 insert 语句时,Oracle应该会先访问一次数据库吧?我记得好像是通过 Hash 的方式来判断内存中是否有这条SQL,如果有,直接执行这条语句,如果没有,然后解析这条语句。
那么这应该至少访问了两次内存了吧。

暂无图片 评论
暂无图片 有用 0
宋化鑫
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏