我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL Server 2012内存

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL Server 2012内存

SQLServer 2012内存

 

翻译自:https://mssqlwiki.com/tag/sql-server-2012-memory-architecture/

 

SQL Server 2012与之前的版本相比,内存管理器在有效的方式管理SQL Server内存消耗上做出了很多改变。每个DBA应该知道的SQL Server 2012内存的重要改变已经在这篇博文中文档化了。如果你不熟悉之前版本的SQL Server内存架构,在你继续了解Denali内存管理器的改变之前,我推荐你阅读这篇文章。

 

SQL Server 2012内存 

 

MaxServer Memory

 

在之前版本的SQL Server里,“Max Server Memory”控制了Single page allocator(BPOOL)可以在SQL Server中消耗的用户地址空间的最大物理内存。

 

只有Single page allocator时候BPOOL的一部分,Max server memory只控制BPOOL,因此,以下分配来自BPOOL(Max server memory)之外。

  1. 来自SQL Server的Multi-Page分配(这些分配请求大于8KB且需要持续内存)

  2. CLR分配(这些包含SQLCLR堆和在启动期间创建的全局分配)

  3. SQL Server进程里用于threadstacks的内存使用(Max worker threads * thread stack size)。Thread stack size在32位SQL Server里是512K,在WOW是904K,在64位是2MB

  4. 通过Non-SQL Server dll产生的直接Windows分配(这些包含Windows堆使用和通过模块加载到SQL Server进程里的直接虚拟分配。例如:来自扩展存储过程DLL的分配,使用OLE自动化过程(sp_OA调用)的对象创建,加载到SQL Server进程里的链接服务器提供者的分配)

 

SQL Server 2012内存管理器现在已经结合了singlepage allocator和multipage allocator作为any-size page allocator。结果,any-size paeallocator现在管理分配,而在过去归类为single page和Multi-page分配。

  1. “Max server memory”现在控制和包含“Multi pages allocations”。

  2. 之前版本SQL Server CLR分配内存在BPOOL(Max server memory)之外。SQL Server 2012包含在“Max server memory”里包含SQL CLR分配的内存。

 

SQL Server 2012“Max servermemory”配置不只包含以下分配:

  1. SQL Server进程里对于threadstacks的内存分配。

  2. 直接对于Windows的内存分配请求(例如:来自于加载到SQL Server进程的第三方DLL的分配(Heap,Virtualalloc调用),使用OLE自动化过程(sp_OA)等的对象创建)。

 

这些改变允许DBA根据内存需要和使用资源调节器更加准确的配置和控制SQL Server。

 

-g启动参数

 

我们使用-g启动选项修改在SQL Server用户地址空间称为“Memory-To-Reserve”的一个区域的默认值。这个区域也被为“Memory-To-Leave”或MTL。这个“Memory-To-Reserve”或-g配置选项只与32位SQL Server实例相关。

 

在之前的SQL Server版本里,直到SQL Server 2008 R2,Multi pages allocation和CLR是Memory-To-Reserve (-g)的一部分,从Denali开始它们是BPOOL的一部分(被Max server memory控制),因此,如果你在之前的版本设置它为multipage allocator或CLR分配更多空间,而现在迁移到Denali,你需要移除-g。

 

从SQL Server2012开始移除了AWE特性

 

AWE特性在之前32位版本的SQLServer中用于寻址大于4GB内存。该特性现在从Denali中移除了。参考:“AWE弃用”。因此如果你需要更多内存,那么你需要迁移到64位SQL Server。

 

在内存中锁定页

 

跟踪标志845不再需要在内存中锁定页。只要SQL Server启动账号有“Lock pages in memory”权限,数据中心版、企业版、标准版和商业智能版对于在BPOOL中分配内存将使用AWE分配器API,该分配将会被锁定。

 

动态虚拟地址空间管理

 

在之前版本的32位SQL Server里,我们在启动时预留了Bpool,剩下的地址空间用于MTL(Memory to reserve或Memory to leave)。在Denali虚拟地址空间管理是动态的(我们不在启动时预留),因此,对于第三方组件相比使用-g参数配置,可以使用更多内存。

 

SQLCLR在启动时加载

 

在之前版本的SQL Server,Common language runtime(CLR)功能当第一个SQL CLR过程或函数被调用的时候在SQLServer进程内初始化。SQL Server 2012在启动时执行SQL CLR初始化。该初始化不依赖于“clr enabled”配置选项。

 

你会注意到在服务启动期间SQL Server错误日志里的如下信息:

 

2012-10-18 15:23:13.250spid8s       Starting up database ‘master’.

2012-10-18 15:23:13.930Server       CLR version v4.0.30319 loaded.

 

总的物理内存和内存模块使用

 

在服务器上总的物理可用内存和内存模块使用记录在SQL Server错误日志。

 

2012-10-18 15:23:06.690Server       Detected 131067 MB of RAM. This isan informational message; no user action is required.

2012-10-18 15:23:06.700Server       Using locked pages in the memorymanager

2012-10-22 15:32:20.450Server       Detected 131067 MB of RAM. This isan informational message; no user action is required.
2012-10-22 15:32:20.450 Server       Using conventional memory in the memory manager.

 

DMV和性能计数器改变

 

在之前的SQL Server版本里,与SQL Server在BPOOL内和BPOOL外相关的分配,大多数DMV使用single_pages_kb和multi_pages_kb。现在它们一起体现为pages_kb。更多详情请点击这里。



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL Server 2012内存

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SQL Server 2012 Alwa

可用性组我们已经创建成功了,现在测试一下Node2 上读取数据以及Failover. 1. 数据测据:Node1上创建表test插入记录   在Node2上访问test数据库,数据可以查到(在Mirror中是不可以查询的,而且数据同步不会导
2023-01-31

sql server 2012高可用解决方案

sql server 2012 提供了多种可用于高可用性的解决方案,例如:1. 通过使用 alwayson 可以提供虚拟 ip 地址(vip)来实现故障转移和读取可扩展性。2. 镜像(mirroring)。它可以在两个实例之间同步数据库
2023-05-05

sql  server 2012高可用解决方案

这篇文章主要介绍了sql  server 2012高可用解决方案,需要的朋友可以参考下
2023-05-18

编程热搜

目录