当前位置: 首页 > news >正文

SQL Server 2014新特性探秘(2)-SSD Buffer Pool Extension

简介

    SQL Server 2014中另一个非常好的功能是,可以将SSD虚拟成内存的一部分,来供SQL Server数据页缓冲区使用。通过使用SSD来扩展Buffer-Pool,可以使得大量随机的IOPS由SSD来承载,从而大量减少对于数据页的随机IOPS和PAGE-OUT。

 

SSD AS Buffer Pool

    SSD是固态硬盘,不像传统的磁盘有磁头移动的部分,因此随机读写的IOPS远远大于传统的磁盘。将SSD作为Buffer Pool的延伸,就可以以非常低的成本巨量的扩充内存。而传统的模式是内存只能容纳下热点数据的一小部分,从而造成比较大的Page-Out,如图1所示。

1

图1.大量随机的IOPS需要由磁盘阵列所承担

 

    但如果考虑到将SSD加入计算机的存储体系,那么内存可以以非常低的成本扩展到约等于热点数据,不仅仅是提升了性能,还可以减少IO成本,如图2所示。

2

图2.扩展后内存几乎能HOLD所有热点数据

 

    由图1和图2的对比可以看出,扩展后可以使用更便宜的SATA存储。此外,该特性是透明的,无需应用程序端做任何的改变。

    此外,该特性为了避免数据的丢失,仅仅在作为缓冲区的SSD中存储Buffer Pool的Clean Page,即使SSD出现问题,也只需要从辅助存储中Page In页即可。

    最后,该特性对于NUMA进行了特别优化,即使拥有超过8个Socket的系统,CPU也能无障碍的访问内存。

 

启用BUFFER Pool Extension

    在SQL Server 2014总,启用Buffer Pool Extension非常简单,仅仅需要拥有SysAdmin权限后,输入一个T-SQL语句即可,如图3所示。

    3

    图3.启用Buffer Pool Extension

 

    对应的,我们可以在物理磁盘中看到这个扩展文件,该文件的性能和Windows的虚拟内存文件非常类似,如图4所示。

    4

    图4.对应的Buffer Pool扩展文件

 

    但这里值得注意的是,我们启用的内存扩展无法小于物理内存或阈值,否则会报错,如图5所示。

    5

    图5.报错信息

 

    对于该功能,SQL Server引入了一个全新的DMV和在原有的DMV上加了一列,来描述Buffer Pool Extention,如图6所示。

    6

    图6.引入的新的DMV和对于原有DMV的更新

 

    此外,对于该特性的监控,SQL Server还引入了大量与之相关的计数器,如图7所示。

    7

    图7.相关计数器

 

小结

    SQL Server Buffer Pool Extension给我们提供了以更低成本来满足更高企业级需求的可能,结合内存数据库,未来的可能性将无限延伸。

相关文章:

  • 抢先体验Windows Server 2012 R2!
  • 【译】用jQuery 处理XML-- DOM(文本对象模型)简介
  • 软件设计师.NET认证考试测试卷(试题及答案)
  • Win2008 建域时提示administrator密码不符合要求
  • sql2000安全设置,堵截cmd.exe和ftp.exe******
  • 你自认为理解了JavaScript?
  • 【转】Deep Learning(深度学习)学习笔记整理系列之(二)
  • 引用与指针的区别
  • 劣质代码评析——《写给大家看的C语言书(第2版)》附录B之21点程序(三)
  • Android 百度地图定位(手动+自动)
  • Swing的Look And Feel机制研究
  • html Ie 6,7,8 a超链带灰底
  • iMatrix平台核心功能——工作流管理介绍
  • 缓存、缓存算法和缓存框架简介
  • 【学习笔记10】Linux常用命令7 - 网络通信、系统关机
  • [译]如何构建服务器端web组件,为何要构建?
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Centos6.8 使用rpm安装mysql5.7
  • ES6核心特性
  • Java深入 - 深入理解Java集合
  • mysql 数据库四种事务隔离级别
  • python 装饰器(一)
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue-loader 源码解析系列之 selector
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 多线程 start 和 run 方法到底有什么区别?
  • 前端临床手札——文件上传
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端面试题总结
  • 入门到放弃node系列之Hello Word篇
  • 实习面试笔记
  • 为视图添加丝滑的水波纹
  • 一文看透浏览器架构
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • #{} 和 ${}区别
  • #在 README.md 中生成项目目录结构
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (阿里云万网)-域名注册购买实名流程
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (多级缓存)多级缓存
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (汇总)os模块以及shutil模块对文件的操作
  • (强烈推荐)移动端音视频从零到上手(上)
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core 连接数据库,通过数据库生成Modell
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 的程序集加载上下文
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET关于 跳过SSL中遇到的问题