视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLServer内存数据写入磁盘的方法比较
2020-11-09 07:37:50 责编:小采
文档


众所周知,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会管理数据页

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

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

下载本文
显示全文
专题