数据库在写入数据是底层是怎么实现的以及写入过程?数据库在读取数据是底层又是怎么事现的以及过程?请详细点或给个连接,小弟要考试,找了几本书都没有,马上考试了,有这2道题,急死了,请大家帮帮忙
大难好我加分 呵呵 百度的分也可以给的

解决方案 »

  1.   

    写入数据的过程,实际上就是写到数据文件上,具体过程如下:
    系统全局区里有两个缓存,一个是数据缓存(Data Buffer Cache),一个是重做日志缓存(Redo Log Buffer),当“数据缓存”快写满的时候,进程DBWn(数据写进程)先把“数据缓存”中的数据写到“重做日志缓存”中,再写到数据文件中,这样就保存到数据库中了。所谓的数据库,其实,就是内存和文件组成的,你可以这样想:数据库的每张表,都有自己的表空间,而表空间都是由单个的数据文件构成的,所以写到表的过程实际上就是写到数据文件的过程。那么,DBWn进程,为什么要先把数据写到“重做日志缓存”中,而不直接写到数据文件上呢?这是为了恢复和备份用的。当写到数据文件上发生异常,数据丢失的时候,可以通过“重做日志缓存”中的数据,进行恢复,把原先(丢失)的数据再写到数据文件中。
      

  2.   

    针对1楼的回答,给你看一个Oracle的架构图,你结合图片理解一下1楼的描述。
    http://hi.csdn.net/space-4884479-do-album-picid-978311.html
      

  3.   

    这里不是DBWn来将数据缓存写入到重做日志缓存,而是LGWR进程在DBWn将数据缓存写入到磁盘之前,将redo信息写入到redo file里的。
      

  4.   

    读取基本是一样的。
    不过,执行读取语句的时候,系统进程,先把你的SQL语句放到共享池里的库缓存中分配内存空间,并且解析。
    解析完了之后,从数据文件上读取数据。