SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化。

一.内存分配器的变化

SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有single page allocator 和multi page allocator。 也就是说, 如果申请的内存是8k以内的, 就会有单页分配器分配,而大于8kb的内存请求,使用multi page 分配器来管理。所以,如果你运行DBCC MemoryStatus,你会发现这两个分配器分配的内存情况:

如果你查询memory clerk,也会发现single pages 和multi pages 两列:

select * from sys.dm_os_memory_clerks

而2012里面就不一样了,你会发现single page 和multi page字样消失了,只剩下pages 字样:

而下面的语句的输出也是不一样的:

select * from sys.dm_os_memory_clerks

那么为什么会有这样的变化呢?原因就是SQL Server 2012里面不再有single page allocator 和multi page allocator,而是把它们统一起来了,叫做 any size page allocator。 下面的两张图可以看到这样的变化:

SQL Server 2008 R2:

SQL Server 2012:

从上面的图可以看出,SQL Server 2012 多了一个memory Manager,它来统一响应SQL Server 内部各种组件内存申请的请求。因为这个原因,在SQL Server 2012里面,max server memory 不再像以前的版本那样,只控制buffer pool的大小,也包括那些大于8kb 的内存请求。也就是, max server memory 能够更准确地控制SQL Server 的内存使用了。更多内存管理信息,可以参考:

http://sqlblog.com/blogs/sqlos_team/archive/2012/07/12/memory-manager-configuration-changes-in-sql-server-2012.aspx

SQL Server 2012 内存管理 (memory management) 改进的更多相关文章

  1. SQL Server 2012 LocalDB 管理之旅

    SQL Server LocalDB能够最大限度地节省您的数据库管理精力,以便开发人员可以专注于开发数据库应用. 使用SqlLocalDB命令行管理LocalDB 为了方便管理,LocalDB提供了一 ...

  2. 浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  3. (转)浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  4. SQL Server 2012 Express LocalDB

    微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio ...

  5. SQL Server 2012 手动安装帮助文档+排错

    逆天SQL Server 2012装的不要不要的,最后发现...竟然没帮助文档...汗啊!原来它跟vs一样要自己装帮助文档...好吧,官网一下载,妹的...报错...然后就让我们还原这个安装过程以及逆 ...

  6. SQL Server 2012 Express LocalDB 的作用

    微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio ...

  7. (转)SQL Server 2012 手动安装帮助文档+排错

    逆天SQL Server 2012装的不要不要的,最后发现...竟然没帮助文档...汗啊!原来它跟vs一样要自己装帮助文档...好吧,官网一下载,妹的...报错...然后就让我们还原这个安装过程以及逆 ...

  8. SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组

    3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移. AlwaysOn关键特性: 一.类似集群 ...

  9. SQL Server 2012 管理新特性:AlwaysOn 可用性组

    SQL Server 2012 新特性(一)管理新特性:AlwaysOn 一.准备环境 1.准备4台计算机 域控制器DC1,IP地址192.168.1.1 主节点SQL1:IP地址192.168.1. ...

随机推荐

  1. 将COleDateTime类型数据转换成char *数据

    用OpenCV做多摄像头校准时间,在图像上显示时间信息,需求要将COleDateTime类型数据转换成char *数据 具体代码如下: 1: COleDateTime m_checkDate; 2: ...

  2. HDU-3487 Play with Chain Splay tee区间反转,移动

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3487 对于一个数列有两种操作:1.CUT a b c,先取出a-b区间的数,然后把它们放在取出后的第c ...

  3. Linux shell 常用

    使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和l技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.于是,我开始在一个文本文件里记录这些用法,并 ...

  4. Android实例-MotionSensor加速度(XE8+小米2)

    结果: 1. 实例代码: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classe ...

  5. ASP.NET奇葩说

    1.form表单 在asp.net中(即runat="server"特性时)method默认值为post  在html中默认是get. 2.Web应用程序项目和网站项目:前者后台文 ...

  6. IOS开发之 ---- 苹果系统代码汉字转拼音

    NSString *hanziText = @"我是中国人";   if ([hanziText length]) {       NSMutableString *ms = [[ ...

  7. PHP流程控制(二)

    布尔型循环就是为真的时候执行,为假的时候停止 注意:1.循环能够节约大量的代码,提高重用性质2.循环,一定要有退出条件.3.While循环中,在while循环之前必须对变量进行初始化; 单层循环:语法 ...

  8. AS问题解决系列1—Unable to execute DX错误

    http://my.oschina.net/1pei/blog/478968 摘要 在将一个开源Android代码import到Android Studio 1.2.2中时,解决了编译期间出现的“Un ...

  9. iOS8 CLLocationManager 、CLGeocoder获取地理位置

    最近在ios8.0使用CLLocationManager定位服务,发现老不能定位,查看设置菜单中的项也是处于未知状态.想起之前都有一个弹出框提示用户是否允许定位,这次一直没有出现了.原来ios8.0下 ...

  10. PHP strpos() 函数

    定义和用法 strpos() 函数返回字符串在另一个字符串中第一次出现的位置. 如果没有找到该字符串,则返回 false. 语法 strpos(string,find,start) 参数 描述 str ...