3.6 SQL Server 内存
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 内存相关推荐
- sql server 内存初探
原文:sql server 内存初探 一. 前言 对于sql server 这个产品来说,内存这块是最重要的一个资源, 当我们新建一个会话,相同的sql语句查询第二次查询时间往往会比第一次快,特别是在 ...
- SQL SERVER 内存分配及常见内存问题(1)——简介
原文:SQL SERVER 内存分配及常见内存问题(1)--简介 一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加: 首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解 ...
- SQL Server 内存泄露(memory leak)——游标导致的内存问题
原文:SQL Server 内存泄露(memory leak)--游标导致的内存问题 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/07/01/sql ...
- Sql Server 内存相关计数器以及内存压力诊断
原文:Sql Server 内存相关计数器以及内存压力诊断 在数据库服务器中,内存是数据库对外提供服务最重要的资源之一, 不仅仅是Sql Server,包括其他数据库,比如Oracle,MySQL等, ...
- sql server 内存_SQL Server内存性能指标–第1部分–内存页/秒和内存页故障/秒
sql server 内存 SQL Server performance basics article, we explained why performance monitoring was imp ...
- sql server 内存_SQL Server内存性能指标–第3部分– SQL Server Buffer Manager指标和内存计数器
sql server 内存 previous parts of the SQL Server performance metrics series, we presented most importa ...
- sql server 内存_SQL Server内存性能指标–第5部分–了解惰性写入,空闲列表停顿/秒和待批内存授予
sql server 内存 SQL Server performance metrics series with the SQL Server memory metrics that should b ...
- SQL Server内存性能监视工具
内存压力使查询变慢 (Memory pressure slowing down queries) This article is the sequel in a series about SQL Se ...
- sql server 内存_SQL Server内存性能指标–第6部分–其他内存指标
sql server 内存 Memory Manager metrics, the memory pressure can be indicated via the 内存管理器指标,可以通过Buffe ...
- SQL Server内存泄漏
翻译自:https://mssqlwiki.com/2012/12/04/sql-server-memory-leak/ 什么是内存泄漏? 当一个进程分配了内存,它应该回收并释放给操作系统.如果由于代 ...
最新文章
- Web前端培训面试攻略
- 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)
- golang.org/x/lint安装失败
- Java常见bean mapper的性能及原理分析
- 信息系统项目的应急预案方案_从环评到验收、排污许可证、应急预案,都应在项目什么阶段开展? 先后顺序是什么?...
- java停止循环label_Java中的break Label 和continue Label 例子(跳出多重循环)(转)...
- adams怎么做往复运动_关于HiFi | 在家里听音乐看电影,喇叭应该怎么选?
- ArcMAp10.2生成栅格数据时报错
- 苹果手机怎么投屏王者荣耀
- 如何在华为应用市场上传APP
- 屏幕录像专家录制超清视频教程-王西猛-专题视频课程
- 存储器类型与S3C2440启动地址
- 学生请销假管理系统java_学生请假管理系统.doc
- Gee引擎配置微端后登录游戏黑屏怎么办?
- 认认真真推荐几个Python、统计学、算法、机器学习...等方向的公众号
- 小学计算机课的游戏橡皮小人,小学计算机科学课:两个女孩和男孩使用带增强现实软件的数码平板电脑,他们感到兴奋、充满惊奇、好奇。STEM 、游戏、学习中的儿童...
- 桌面提醒工具 Active Desktop Calendar
- 曹国伟的二次创业,为什么如今成了互联网红灯区?
- windows10家庭版升级与更新问题
- 公众号运营必备 | 三大神器让你轻松写出好文案