Oracle检查点(个人理解)

一、Oracle检查点是什么?

在很多的文章中都对Oracle的检查点作了很详细的描述,我也看了很多关于检查点的文章,在这里只想把自己对检查点的理解写出来。Oracle的检查点用非常简单的话来说它就是Oracle的一个事件,从程序开发的角度来看,它是Oracle软件中自定义的一个事件,这个事件的作用是为了减少实例恢复的时间,在Oracle代码中,估计有好些触发这个检查点事件的代码,要么是一个计时器触发,要么是日志切换时触发等等。

二、Oracle检查点的由来?

在Oracle中为什么要有检查点这个事件呢?Oracle从性能考虑出发,考虑到磁盘I/O操作对性能的影响,或者说Oracle的整个系统架构和设计都考虑了性能,比如它的SGA中的buffer cache等。当用户更新或者插入数据的时候,系统首先会将数据保存到数据缓存中,而不是直接存储到硬盘上的数据文件中。而等到满足一定条件的时候,系统就会将数据缓存中的内容保存到硬盘上的数据文件上。促使将数据缓存中的信息保存到数据文件中的条件有很多,不过最重要的就是检查点了。在Oracle数据库中,检查点是一个事件,或者说是一个触发器。当满足一定的条件时就会触发这个事件。然后数据高速缓存中的脏缓存块中的数据就会被写入到数据文件之中。

比如当用户更新数据表中的数据时,首先用户在客户端应用程序发出更新表的SQL语句,然后在Oracle服务端产生一个服务器进程来代理该用户进程提交该SQL语句,服务器进程首先在buffer cache中查看该SQL语句涉及的相关记录是否在存在,如果不存在就启动磁盘I/O,从数据文件中读取相关数据到buffer cache中,

posted on 2011-05-27 16:31  v5koma  阅读(1263)  评论(0)    收藏  举报

导航