数据库会在什么时候把内存里面的东西写到磁盘上!?
不同的数据库是不是不同的呢!?谁了解的话说一下,谢谢!!

解决方案 »

  1.   

    对于 SQL SERVER,由于只能通过缓冲区来访问数据或索引页面,因此缓冲区中必须存在可用的空闲页面来存储新读取的数据;如果缓冲区中缺少空闲页面,则需要释放老的内存页。如果是脏页,还需要将其写入磁盘。SQL SERVER 通过 Lazy Writer 线程(惰写)来释放缓冲区中的内存页面。Lazy Writer 线程会定时启动并检查空闲列表中的页面数是否低于阈值(取决于缓冲区的大小,显然系统的内存需求压力越大,惰写线程调用的越频繁),如是,线程便开始扫描缓冲区来寻找一定时间内没有被引用的页面,将其释放(放入空闲列表)。具体算法以 SQL 2000 为例。缓冲区中每个页面都保存有一个引用计数器,页面每被访问一次,该计数器便会增加(对于数据和索引页面每次加 1,而对于过程执行计划则会多加,因为生成此类缓存会消耗更多的时间和资源);每当 Lazy Writer 线程扫描页面一次,便会将引用计数器除以 4 取整数,直到计数器为 0 释放页面,如果此页面是脏页则刷新此页(按预写日志机制,脏页可能会被阻止刷新和释放)。SQL Server 的版本不同,释放缓冲的算法也有不同。
      

  2.   

    数据库会在什么时候把内存里面的东西写到磁盘上!?应该是 事务日志上记录好了LOG记录 然后就写了吧