一,内存term

VAS:Virtual Address Space,是App能够申请访问的最大地址空间。

Physical Memory:对SQL Server 来说,频繁访问的数据对象长时间驻留在Physical Memory中,才能达到最优的性能。

Reserved Memory:申请将VAS的一段地址空间Reserve。保留的只是VAS上的一段地址,而不是真正的Physical memory。

Committed Memory:对Reserved的部分 Memory Page 进行Commit,Commit 操作是建立VAS 和 Physical memory 之间的映射,因此Committed Memory将隐射到实际的Physical Memory中。即App正式在物理内存中申请一段空间。

  1. VAS中存储的数据不一定存储在Physical Memory中,Windows 根据App的使用情况,决定存放在 physical memory 或 page file。如果存储在Page file中,App在访问时,必须进行一个Disk IO动作,称作 Paging In/Out(换进或换出)。
  2. 分两步来Reserve 和 Commit 内存,通过推迟页面的提交来减少物理内存的使用。

Workset 是 Committed Memory的一部分,是Process在运行时使用的物理内存。

Page Fault:App访问一个处于Reserved Memory中的Page,但是该page不存在于Workset,就会发生一次Page Fault。如果目标Page 存在于Page File(Disk File),那么OS会进行一次IO,将目标Page从Disk读取到Workset中,称作Hard falut;如果目标Page存在于committed memory,那么只需要将目标Page重定向到Workset中,称作Soft Fault,Soft Fault对性能的影响微乎其微。

手绘一张图:SQL Server 是预先 Reserved 一块大的内存,在使用的时候,一块一块的提交Commit,而committed Memory 在访问时转换为物理中,可以理解,committed memory 是SQL Server使用的物理内存,能够向物理内存Page中写入数据和读取数据。

二,当SQL Server出现内存压力时,需要关注OS的Committed Memroy, Available Memory和 Hard Fault。

1, Commit memory是将reserverd memory(virtual memory) 转换为 physical memory,是app真正使用的物理内存。

OS 能够Commit的最大内存空间是所有Physical memory+ Page File(缓存文件),如果Committed Memroy接近最大内存空间,那么说明系统的内存使用已经接近极限。如果Page File不能自动增长,系统将不能提供更多的内存空间。

2, Page File 是文件缓存,OS用于临时存储内存中Page的Disk File。如果内存不足,那么 OS会将部分page 存储在Page File中,产生一次Disk File的Write 操作;如果App需要用到Page File中的Page,那么OS会将目标Page从Page File中读取到内存中,产生一次Disk File的Read操作。如果Page File的%Uage高,说明App实际需要的内存和committed memory的差距较大,App需要频繁的将Page存储到Disk File中。

Page Fault:Hard Page Fault是指OS将目标Page从Page File读取到物理内存中,由于会产生一次Disk IO,对App的性能影响较大。Soft Page Fault 是指目标Page存在于物理内存中,只是需要重定向到Workset中,对App的性能影响微乎其微。

对于一个性能良好的SQL Server 系统来说,Hard Page Fault 应该保持在一个较小的数值,Disk 的 Paging 动作越少越好。系统存在足够的内存,会使目标Page能够长时间的驻留在物理内存中,而不需要频繁的进行Disk的Paging动作。

如果内存不足,OS和 SQL Server 会在物理内存和文件缓存之间做大量的Paging 动作(Page的换进和换出),这会导致大量的Disk IO,使得Disk IO比较繁忙;OS要做Paging 动作,所带来的Disk IO的动作必须运行在核心态下,所以会核心态的CPU时间会升高,而用户态的CPU时间反而不会很高。一般情况下,用户态的CPU时间很高说明SQL Server 正在全力工作。

SQL Server 内存和Paging的更多相关文章

  1. Sql Server 内存相关计数器以及内存压力诊断

    在数据库服务器中,内存是数据库对外提供服务最重要的资源之一, 不仅仅是Sql Server,包括其他数据库,比如Oracle,MySQL等,都是一类非常喜欢内存的应用. 在Sql Server服务器中 ...

  2. SQL SERVER 内存分配及常见内存问题 简介

    一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加: 首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解SQL SERVER与windows是如何协调.共享内存.并且SQ ...

  3. SQL Server内存性能分析

    内存概念: Working Set = Private Bytes + Shared Memory Working Set:某个进程的地址空间中,存放在物理内存的那一部分 Private Bytes: ...

  4. SQL SERVER 内存分配及常见内存问题(1)——简介

    原文:SQL SERVER 内存分配及常见内存问题(1)--简介 一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加: 首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解 ...

  5. SQL Server内存遭遇操作系统进程压榨案例

    场景: 最近一台DB服务器偶尔出现CPU报警,我的邮件报警阈(请读yù)值设置的是15%,开始时没当回事,以为是有什么统计类的查询,后来越来越频繁. 探索: 我决定来查一下,究竟是什么在作怪,我排查的 ...

  6. SQL SERVER 内存学习系列(二)-DMV查看内存信息

    内存管理在SQL Server中有一个三级结构.底部是内存节点,这是最低级的分配器,用于SQL Server的内存.第二个层次是由内存Clerk组成,这是用来访问内存节点和缓存存储,缓存存储则用于缓存 ...

  7. SQL SERVER 内存学习系列(一)

    最近帮客户解决发布订阅的问题时,突然遇到这样一个问题发布订阅中报下面的错误,另外执行alter table 操作时也会报错 : 问题很奇怪发布订阅和CLR有什么关系?memtoleave内存是个啥?回 ...

  8. 人人都是 DBA(IV)SQL Server 内存管理

    SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache.Buffer Pool.Memory Clerks 等.本文仅是管中窥豹,描述常见的内存管理 ...

  9. SQL Server内存理解的误区

    SQL Server内存理解 内存的读写速度要远远大于磁盘,对于数据库而言,会充分利用内存的这种优势,将数据尽可能多地从磁盘缓存到内存中,从而使数据库可以直接从内存中读写数据,减少对机械磁盘的IO请求 ...

随机推荐

  1. ContactsUtil 工具类 - 转载

    import java.util.HashMap; import java.util.Map; //http://www.open-open.com/code/view/1432300986802 / ...

  2. HDU 4801 Pocket Cube

    题目链接 去年现场,虎哥1Y的,现在刷刷题,找找状态... 一共6种转法,把3个面放到顶部,左旋和右旋,感觉写的还不错....都写成常数了. #include <stdio.h> #inc ...

  3. 前端开发神器sublime Text

    实用的sublime插件集合 – sublime必备插件 前言 入前端领域开始,就学着使用sublime,一直用起来很顺手,速度是我最欣赏的,快的没有编辑器可以匹敌.还是废话不多扯,入正题.好多有多少 ...

  4. 验证mongodb主从复制过程~记录操作

    接 mongodb的安装:http://www.cnblogs.com/myrunning/p/4319367.html 1.1创建数据目录 在这里我们将不使用mongodb的配置文件启动mongod ...

  5. IntelliJ IDEA 15 激活码 正版 可离线激活

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  6. SQL Server 求结果

    ;with cte as ( select  CONVERT(DATE, DATEADD(DAY, -9, GETDATE())) as paytime union all select datead ...

  7. js 的一些知识 摘自http://img0.pconline.com.cn/Pc_intranet/1105/13/313647_7.pdf

    Js 问题分析--js 影响页面性能现状分析:问题陈述分析问题:抽象问题根源,通过实例或推理证明问题的严重性问题引申:以现有问题为点开始扩散,这将导致其它什么问题,或同一类型的问题问题总结:从分散开始 ...

  8. 思科交换机配置DHCP的四个方面

    这里我们主要讲解了思科交换机配置DHCP的相关内容.我们对网络拓扑先进行一下了解,然后对于其在进行一下说明,之后对于配置的代码和命令再进行一下解析. 思科交换机配置DHCP一.网络拓扑 思科交换机配置 ...

  9. 关于MongoDB你需要知道的几件事

    Henrique Lobo Weissmann是一位来自于巴西的软件开发者,他是itexto公司的联合创始人,这是一家咨询公司.近日,Henrique在博客上撰文谈到了关于MongoDB的一些内容,其 ...

  10. .NET面试题系列[12] - C# 3.0 LINQ的准备工作

    "为了使LINQ能够正常工作,代码必须简化到它要求的程度." - Jon Skeet 为了提高园子中诸位兄弟的英语水平,我将重要的术语后面配备了对应的英文. .NET面试题系列目录 ...