SQL Server运行过程主要集中在内存中,因此下面分两个部分进行介绍,第一部分先 了解Windows中的内存管理,因为内存资源首先是由操作系统来管理的,SQL Server的内 存申请必须得到操作系统的同意,这样才可以得到资源。我们常说的内存实际上分为物理 内存(Physical Memory/RAM)和虚拟内存(Virtual Memory)。第二部分是介绍 SQL Server 内部的内存结构,以及如何侦测内存问题。

3.6.1物理内存和虚拟内存

事实上,本节涉及的内容已经超出了数据库范畴,但因为SQL Server运行在Windows 上,如果不清楚Windows是如何管理及使用物理内存和虚拟内存,在深人研究的过程中就会 出现瓶颈。下面主要介绍Windows管理内存和应用系统(包括SQL Server)的运行情况。

内存的性能指标主要是GB/s和ns (纳秒),前者是吞吐量,后者是响应时间。磁盘的 性能指标是MB/s和呷(微秒)。两者的差距是千倍。

2. 虚拟内存

如果所有的应用都运行在物理内存中,那么物理内存将会很容易变成瓶颈,因为所有 的进程都必须共享相同的地址范围。另外物理内存不能随便增加,所以需要高效使用资源。

Windows会授予每个进程一个虚拟地址空间(Virtual address space, VAS),通过VAS 建立起应用程序和物理内存之间的桥梁。两个进程可以使用相同的VAS,VAS的大小取决 于CPU的架构,64位系统可以使用0〜16EB的空间,不过厂商通常会限制到16TB。其 中8TB为内核模式(Kernel Mode), 8TB为用户模式(User Mode)。换句话来说,SQL Server可以访问8TB的VAS。近年来,32位系统已经逐渐退出市场,所以本书主要关注64 位系统。顺便说一下,32位系统仅支持4GB的VAS,它分为2GB的内核模式和2GB的用 户模式。

3. 虚拟内存管理器

虚拟内存管理器(Virtual Memory Manager, VMM),是Windows的一部分,负责管理 所有物理内存,并在系统中所有需要内存的进程之间共享。VMM的工作就是在进程需要操 作内存(读写)时,提供VAS。VMM通过管理每个进程的虚拟内存来实现该项工作。

为了实现管理,VMM会在必要时从VAS中回收物理内存。将驻留在内存中的数据存 储到页面文件中,这样保证数据不会丢失。当进程再次需要内存时,VMM会从页面文件 中查找数据,并在一块空闲内存中写入这部分数据,然后将新页面映射到需要操作的VAS 中。如果这个过程发生延时或中断,就会成为页面错误,可以通过监控SQL Server实例的 Process: Page Faults/sec计数器来査看是否存在过度的页面切换。

如果系统有足够的RAM, VMM只需要传输内存并在进程结束后清理内存;如果没有 足够的RAM, VMM就需要使用页面文件来存储数据了,这会带来一定的额外开销。

4. 定义页面文件大小

页面文件是磁盘文件。计算机使用页面文件来增加虚拟内存的物理存储地址。也就是 说,当正在运行的进程使用的内存超过了可用的RAM,操作系统会使用一个或多个VAS把数据移动到物理磁盘的页面文件中,从而释放内存,用于其他用途。前面曾提到过,页 面文件有一定的性能问题,所以应尽可能地保证SQL Server只使用物理内存。在默认情况 下,Windows会维护相当于RAM1.5倍大小的页面文件。这个页面文件的主要目的是提高 数据从磁盘移到内存中的效率。如果担心过大的页面文件会影响性能,可以考虑把页面文 件设为可用RAM的50%。另外,有时候SQL Server和操作系统可能没有很好地共享可用物理内存,这时可能会 看到有关虚拟内存不足的系统警告。对于这种情况,最佳方法是增加RAM、重新配置SQL Server的内存,或者增加页面文件的大小。

5. NUMA

NUMA指的是非一致性内存访问(non-uniform memory access),另外一种系统体系结

构是SMP (对称多处理器),两者的主要区别是将内存连到哪里以及如何在系统总线上排列

处理器。在 SMP中,内存通过一条共享总线对称地连接到所有处理器;而在NUMA中,

每组处理器有自己的“本地”内存池。这个优点是只要所需的数据存在于本地内存池中,

每个处理器就不需要访问太远的内存,但是如果数据不在本地,则开销会略高于SM P:所

以在使用NUMA时,应该尽量保证数据存放在本地内存中。

如果CPU插槽比较充足,可以使用每4 个插槽一组,作为一个NUMA节点。这个数

量是可以调整的,但是随着节点数增多,数据存放在本地内存的几率就会减小,而且管理

节点的开销也会随之增大。SQL Server会在启动时创建自己的内部节点,用于映射NUMA 节点。

6. SQL Server NUMA CPU 配置

可以使用sys.dm os schedulers来直接查看SQL Server的NUMA配置。例如下面的查

询在笔者计算机上的结果如图3-8所示。

SELECT scheduler_id , cpu_id , parent_node_id , status FROM sys.dm_os_schedulers

图3-8中这个结果代表笔者计算机上有4 个逻辑

CPU ( cpu i d ) , 但是没有做 NUMA ( parent node id

只有0 和64),而64是 DAC专用的,每个调度都会

有一个。

转载于:https://www.cnblogs.com/zhouwansheng/p/9236962.html

3.6 SQL Server 内存相关推荐

  1. sql server 内存初探

    原文:sql server 内存初探 一. 前言 对于sql server 这个产品来说,内存这块是最重要的一个资源, 当我们新建一个会话,相同的sql语句查询第二次查询时间往往会比第一次快,特别是在 ...

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

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

  3. SQL Server 内存泄露(memory leak)——游标导致的内存问题

    原文:SQL Server 内存泄露(memory leak)--游标导致的内存问题 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/07/01/sql ...

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

    原文:Sql Server 内存相关计数器以及内存压力诊断 在数据库服务器中,内存是数据库对外提供服务最重要的资源之一, 不仅仅是Sql Server,包括其他数据库,比如Oracle,MySQL等, ...

  5. sql server 内存_SQL Server内存性能指标–第1部分–内存页/秒和内存页故障/秒

    sql server 内存 SQL Server performance basics article, we explained why performance monitoring was imp ...

  6. sql server 内存_SQL Server内存性能指标–第3部分– SQL Server Buffer Manager指标和内存计数器

    sql server 内存 previous parts of the SQL Server performance metrics series, we presented most importa ...

  7. sql server 内存_SQL Server内存性能指标–第5部分–了解惰性写入,空闲列表停顿/秒和待批内存授予

    sql server 内存 SQL Server performance metrics series with the SQL Server memory metrics that should b ...

  8. SQL Server内存性能监视工具

    内存压力使查询变慢 (Memory pressure slowing down queries) This article is the sequel in a series about SQL Se ...

  9. sql server 内存_SQL Server内存性能指标–第6部分–其他内存指标

    sql server 内存 Memory Manager metrics, the memory pressure can be indicated via the 内存管理器指标,可以通过Buffe ...

  10. SQL Server内存泄漏

    翻译自:https://mssqlwiki.com/2012/12/04/sql-server-memory-leak/ 什么是内存泄漏? 当一个进程分配了内存,它应该回收并释放给操作系统.如果由于代 ...

最新文章

  1. Web前端培训面试攻略
  2. 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)
  3. golang.org/x/lint安装失败
  4. Java常见bean mapper的性能及原理分析
  5. 信息系统项目的应急预案方案_从环评到验收、排污许可证、应急预案,都应在项目什么阶段开展? 先后顺序是什么?...
  6. java停止循环label_Java中的break Label 和continue Label 例子(跳出多重循环)(转)...
  7. adams怎么做往复运动_关于HiFi | 在家里听音乐看电影,喇叭应该怎么选?
  8. ArcMAp10.2生成栅格数据时报错
  9. 苹果手机怎么投屏王者荣耀
  10. 如何在华为应用市场上传APP
  11. 屏幕录像专家录制超清视频教程-王西猛-专题视频课程
  12. 存储器类型与S3C2440启动地址
  13. 学生请销假管理系统java_学生请假管理系统.doc
  14. Gee引擎配置微端后登录游戏黑屏怎么办?
  15. 认认真真推荐几个Python、统计学、算法、机器学习...等方向的公众号
  16. 小学计算机课的游戏橡皮小人,小学计算机科学课:两个女孩和男孩使用带增强现实软件的数码平板电脑,他们感到兴奋、充满惊奇、好奇。STEM 、游戏、学习中的儿童...
  17. 桌面提醒工具 Active Desktop Calendar
  18. 曹国伟的二次创业,为什么如今成了互联网红灯区?
  19. windows10家庭版升级与更新问题
  20. 公众号运营必备 | 三大神器让你轻松写出好文案

热门文章

  1. testng_TestNG注释
  2. zabbix (二)安装
  3. 05-简单的输入输出
  4. 自制微信小程序通讯JS
  5. 0514JS练习:函数
  6. Python自然语言处理学习笔记(30):4.2 序列
  7. 【整数转字符串】LeetCode 9. Palindrome Number
  8. 变量独立与不相关的区别
  9. selenium课程笔记3-使用selenium中的webdriver对浏览器操作-页面元素定位及操作
  10. centos 安装tmux