SQL Server内存数据写入磁盘方法比较
众所周知,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会管理数据页的创建和分配,这些操作不会等待所有的页面创建完成后才将内存中的数据写入到页面中,而是以更高的优先级边创建边将缓存中的数据写入页面中,以保证缓冲池有足够的空间来完成这些操作。
SQL Server内存数据写入磁盘方法比较的更多相关文章
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过 ...
- 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历
使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇 ...
- Centos-强制将内存中数据写入磁盘-sync
sync 强制将内存中数据写入磁盘,以免数据丢失.在linux系统中,修改过的操作并不会立即写入磁盘,而是先写到内存中,通过buffer队列当达到指定时间或者指定大小再一次性写入磁盘,提高IO效率,正 ...
- SQL SERVER 内存分配及常见内存问题 简介
一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加: 首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解SQL SERVER与windows是如何协调.共享内存.并且SQ ...
- SQL Server 内存中OLTP内部机制概述(三)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...
- SQL Server 内存中OLTP内部机制概述(二)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...
- SQL Server 内存中OLTP内部机制概述(一)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...
- SQL Server内存性能分析
内存概念: Working Set = Private Bytes + Shared Memory Working Set:某个进程的地址空间中,存放在物理内存的那一部分 Private Bytes: ...
随机推荐
- [0.1]Plan of kidsearch
To be honest, it's not pretty easy to complete the project. So we have to sort out ideas first. In t ...
- linux 查看当前路径命令:pwd
查看当前路径命令:pwd pwd命令能够显示当前所处的路径. 这个命令比较简单,如果有时在操作过程中忘记了当前的路径,则可以通过此命令来查看路径,其执行方式为: # pwd /home/samlee ...
- PIL在windwos系统下Image.show无法显示图片问题的解决方法
环境:1.win7 64位 2.python 2.7.8 3.PIL-1.1.7.win32-py2.7 在运行一下例子时候出现问题: #-*-coding:utf-8-*- __author__ = ...
- springMVC3学习(九)--redirect和forward跳转
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ...
- delphi 获取网页源代码
//获取网页源代码 var s: string; begin s := WebBrowser1.OleObject.document.body.innerHTML; //body内的所有代码 ...
- WWDC2015—图解
- Online ddl 思维导图
http://blog.itpub.net/22664653/viewspace-2056953/ 整理一份 MySQL DDL 的思维导图,介绍5.5版本以及之前 和 5.6 版本的 MySQL ...
- 利用 Composer 完善自己的 PHP 框架(二)——发送邮件
本教程示例代码见 https://github.com/johnlui/My-First-Framework-based-on-Composer 回顾 上一篇文章中,我们手工建造了一个简易的视图加载器 ...
- BootStrap2学习日记3--响应式布局实用类
BootStrap2中常用的响应式布局类如: visible-phone 仅在 手机平台显示 visible-tablet 仅在 平板电脑显示 visible-desktop 仅 ...
- C语言第二节概述
学前提醒 其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言 iOS开发需要学习的主要程序设计语言有:C语言.C++.Objective-C,其中C++. ...