博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 2014新特性——Buffer Pool扩展
阅读量:6156 次
发布时间:2019-06-21

本文共 2065 字,大约阅读时间需要 6 分钟。

Buffer Pool扩展

Buffer Pool扩展是buffer pool 和非易失的SSD硬盘做连接。以SSD硬盘的特点来提高随机读性能。

缓冲池扩展优点

SQL Server读以随机读为主,SQL Server IO分为2部分:buffer pool管理方式,和buffer pool

SQL Server 从磁盘中读入数据,并且存放在buffer pool中以供读取和修改,修改完之后脏数据还是放在buffer pool中,当内存紧张执行lazy write把脏数据写入磁盘,并且释放内存页。要用时又会从磁盘中读取,这样无形中加大了对io的需求。

SQL Server 2014之前解决方法:加内存,减少对IO的需求

SQL Server 2014解决办法:使用buffer pool扩展,加入SSD硬盘,加大工作集,减少对IO的需求。

主要优点:

·  随机 I/O 吞吐量提高

·  I/O 滞后时间缩短

·  事务吞吐量提高(减少io等待时间)

·  由于采用更大的混合缓冲池,读取性能提高(SSD随机读写能力强)

·  具有一种可利用现有和将来的低成本内存驱动器的缓存体系结构(因为有SSD,可以减少对IO的投入)

Buffer Pool扩展详细

SSD是作为Buffer Pool的扩展,而不是磁盘存储的扩展,也就是说SSD是归buffer pool管理器管,Buffer pool以在SSD上创建一个缓冲文件的方式存在,创建了一个多层的结构:

L1:内存,L2SSD缓存文件。L2上面的数据都是干净的数据,L2目前看来只是为读提供缓存,不提供脏数据的缓存。从而加大了工作集,为数据读取提供良好的性能支持。

启用缓冲池扩展后,该功能会指定固态硬盘上缓冲池缓存文件的大小和文件路径。 此文件是固态硬盘上的一个连续存储范围,是在 SQL Server 实例启动期间静态配置的。

 

ALTERSERVER CONFIGURATION SETBUFFERPOOL EXTENSION ON

(FILENAME='c:\sqlserver.PBE',size = 5GB)

只有在禁用了缓冲池扩展功能的情况下,才能修改此文件的配置参数。 禁用缓冲池扩展后,将从注册表中删除所有相关的配置设置。SQL Server 实例关闭时,将会删除缓冲池扩展文件。

 

ALTERSERVER CONFIGURATION SETBUFFERPOOL EXTENSION OFF

 

最佳实践

1. 缓冲池扩展大小最大可为 max_server_memory 值的 32 倍。 我们建议物理内存 (max_server_memory) 的大小与缓冲池扩展的大小之比不应超过 1:16 介于 1:4  1:8 之间的比率是最佳的。

2. 在生产环境中实现之前,应彻底测试缓冲池扩展。 处于生产过程中时,请避免对该文件进行配置更改或关闭该功能。 因为禁用该功能时会大大减小缓冲池大小,所以这些活动可能会对服务器性能产生负面影响。 禁用时,不回收用于支持该功能的内存,直到重新启动 SQL Server 的实例。 但是,如果重新启用该功能,将重用内存而不必重新启动实例。

Buffer pool 扩展相关信息

·         

·         

XEvent

说明

参数

sqlserver.buffer_pool_extension_pages_written

在将页或页组从缓冲池逐出并写入缓冲池扩展文件时激发。

·    number_page

·    first_page_id

·    first_page_offset

·    initiator_numa_node_id

sqlserver.buffer_pool_extension_pages_read

在将页从缓冲池扩展文件读取到缓冲池时激发。

·    number_page

·    first_page_id

·    first_page_offset

·    initiator_numa_node_id

sqlserver.buffer_pool_extension_pages_evicted

在将页从缓冲池扩展文件中逐出时激发。

·    number_page

·    first_page_id

·    first_page_offset

·    initiator_numa_node_id

sqlserver.buffer_pool_eviction_thresholds_recalculated

在计算逐出阈值时激发。

·    warm_threshold

·    cold_threshold

·    pages_bypassed_eviction

·    eviction_bypass_reason

·    eviction_bypass_reason_description

 

参考

 

    本文转自 Fanr_Zh 博客园博客,原文链接:http://www.cnblogs.com/Amaranthus/p/3695914.html,如需转载请自行联系原作者

你可能感兴趣的文章
淘宝的几个架构图
查看>>
linux后台运行程序
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
登记申请汇总
查看>>
Android Jni调用浅述
查看>>
CodeCombat森林关卡Python代码
查看>>
第一个应用程序HelloWorld
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Java并发编程73道面试题及答案
查看>>
企业级负载平衡简介(转)
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>