SQLServer内存数据写入磁盘的方法比较

WBOY
풀어 주다: 2016-06-07 15:27:14
원래의
1243명이 탐색했습니다.

众所周知,SQLServer增删改 数据 最先都是在 内存 中进行的,这可以大大加快 数据 操作的速度;当 内存 中的 数据 被修改了,而 磁盘 中的 数据 还没有被修改时,就产生了所谓的脏页,SQLServer是如何同步 内存 和 磁盘 的 数据 的呢?以下三种 方法 就是为

    众所周知,SQLServer增删改数据最先都是在内存中进行的,这可以大大加快数据操作的速度;当内存中的数据被修改了,而磁盘中的数据

还没有被修改时,就产生了所谓的”脏页“,SQLServer是如何同步内存磁盘数据的呢?以下三种方法就是为同步内存磁盘数据而产生的。

 

LazyWrite(惰性写入器):
   作用:
   1.管理SQLServer空闲内存
    a. 定期检查空闲缓冲列表的大小,当这个值过低的时候,它会扫描整个数据缓存,将一段时间没有使用的页面老化(通过LRU算法),释放内存空间;
    b. 如果找到一段时间没有被使用的脏页,它会将其写入磁盘,然后将这个页面的内存空间标记为空闲空间;
  
   2.协调Windows与SQLServer内存
    a. 监视服务器内存,如果Windows物理内存很少,它会从空闲缓冲列表中释放内存给Windows;
    b. 在SQLServer负载很重时,它还会在分配给SQLServer的内存没有达到最大服务器内存阀值时,增加空闲缓冲列表的大小,以适应负载的需要。


CheckPoint:
   作用:检查点是检查点进程创建的一个时间点,在这个时间点,SQLServer可以确认所有提交的事物所做的修改都已经写入磁盘,它是一个标记,
         这个标记是数据库恢复的起始点,大约每分钟运行一次,这样在启动数据库时,确保数据库在一分钟内就能完成恢复操作;但是如果在这段
         时间内写入日志的数据不到10MB,SQLServer就不会自动发起检查点。

         跟踪标记(trace flag)3502在错误日志中记录检查点的开始和结束位置。

    与LazyWrite比较,CheckPoint不会从缓存中移出脏页,CheckPoint进程的工作只是保证脏页被写入磁盘,并且在页头将缓存中的这个页面标记为
    干净的页面。
 
EagerWrite:
    通常在BCP、SELECT INTO, WRITETEXT,UPDATETEXT,BULK INSERT等操作时发生,为了加快这些操作的速度,EagerWrite会管理数据

的创建和分配,这些操作不会等待所有的页面创建完成后才将内存中的数据写入到页面中,而是以更高的优先级边创建边将缓存中的数据写入页面中,

以保证缓冲池有足够的空间来完成这些操作。

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!