`

SQL Server 2008内存性能监控

 
阅读更多

原文首发于it168,链接见http://tech.it168.com/a2011/0221/1158/000001158998.shtml

内存 相关概念

  以下均是针对Window 32位系统环境下,64位的不在下面描述情况下。

  用户模式和内核模式(user mode& kernel mode)

  为了防止用户程序访问并篡改操作系统 的关键部分,Windows使用了2种处理器存取模式:用户模式和内核模式。顾名思义,内核模式是给操作系统 核心代码和基本驱动用的,用户模式给用户应用程序。在内核模式下程序可以访问所有的内存 和硬件,并使用所有的处理器指令。操作系统程序比用户程序有更高的权限,使得系统设计者可以确保用户程序不会意外的破坏系统的稳定性。

  物理内存(Physical Memory)

  即实际购买的内存的大小,内存条上的容量。CPU 的地址线可以直接进行寻址的内存空间大小,在32位操作系统平台上,CPU 的最大寻址空间为4GB,也即可以支持最大4G的物理内存空间。在32位操作系统上即便你购买的是64G内存,也只能说拥有4GB的物理内存空间

  虚拟内存(Virtual Memory)

  如果计算机缺少运行程序或操作所需的随机存储内存,则Windows使用虚拟内存进行补偿。虚拟内存将计算机的RAM和硬盘 上的临时空间组合在一起,当RAM不足时,虚拟内存将数据从RAM移动到称为“分页文件”的空间中,将数据移入与移出分页文件可以释放RAM,以便完成工作。

  虚拟地址空间(Virtual Address Space,简称VAS)

   在Windows系统中,任何一个进程都被赋予了其自己的虚拟地址空间,该虚拟地址空间覆盖了一个相当大的范围,对于32位系统的虚拟地址空间范围从 0x00000000~0xffffffff(4GB)。Windows采用分页机制,将4G的地址空间分成固定大小的页,并且将虚拟地址中的每一页映射 到物理内存中。

  在缺省的情况下虚拟地址空间中的低2G,即0x0000000~0x7FFFFFFFF是用户地址空间,而4G虚拟地址空间中的高2G即0x8000000~0xFFFFFFFF是分配给内核模式。实际上用户进程拥有的虚拟地址空间只有2GB。

  虚拟内存管理器(Virtual Memory Manager)

  虚拟内存管理器负责虚拟地址空间和物理内存的地址映射,如果缺乏足够内存,则需要使用到page file文件来保持临时数据也即虚拟内存,同时使用page table entry(PTE)来跟踪每一个地址映射关系。

  到这里为止,64G的内存有60G都无法访问,岂不是浪费了,那怎么办?

  /3GB和increaseUserVA

  通过/3GB的方式,可以减少内核模式占用地址空间,从而增加SQL Server进程的地址空间。默认情况下,用户模式和内核模式各自占用2G寻址空间,3G选项可以使得SQL Server获得多1G的虚拟地址空间。

  /3GB开关用法:

  在Boot.ini文件中修改其中的段落即可:

SQL Server 2008性能监控

  或者使用bootcfg命令

SQL Server 2008性能监控

  在Windows Server 2008中可以运行BCDEdit命令,加以调整。

SQL Server 2008性能监控

  物理地址扩展PAE(Physical Address Extension)

  物理地址扩展(PAE)是32位Intel CPU的一种扩展,这样可以在32位系统上支持最大64G的物理内存,即4GB以上物理内存允许将更多物理内存映射为应用程序的虚拟地址空间。

  使用方式,在Boot.ini文件中修改其中的段落即可:

SQL Server 2008性能监控

  在Windows Server 2008操作系统下也可以通过以下命令执行

SQL Server 2008性能监控

  /PAE和/3GB

  两者的目标是不同的,又可以在同样的地方进行配置,所以难免产生疑惑,简单的来说就是如果计算机可用物理内存超过16GB,就需要确保boot.ini文件中没有/3gb参数即可。

  地址窗口化扩展插件AWE(Address Windowing Extensions)

   AWE是Windows的内存管理功能的一组扩展,它能够使应用程序使用的内存量超过通过标准32位寻址可使用的2~3G内存。AWE允许应用程序获取 物理内存,然后将非分页内存的视图映射到32位地址空间。虽然32位地址空间限制为4GB,但是非分页内存却可以远远大于4GB。

  在SQL Server 2008下,可以登录SQL Server Management Studio,找到相应的数据库实例,点击右键选择属性,然后在“选择页”中点击内存,在服务器内存 选项中,复选使用AWE分配内存即可。

SQL Server 2008性能监控

SQLServer的内存 管理

SQL Server 2008性能监控

  SQL Server 主要的内存 组 件是缓冲池。其中高速数据缓冲区用以把数据从磁盘加载到内存中,实现数据的高速读写。而过程高速缓冲区则用来存储相应的执行计划,减少编译过程,也是高速 缓冲仓库的主要构成部分。用户仓库高速缓冲是用户仓库的主要组成本部分。对象仓库则仅仅是内存块组成的内存池,不需要进行LRU或成本计算例如SQL Server网络接口(SNI)利用对象存储仓库作为网络缓冲池。

  SQL Server 内存管理器由一个三层的层次结构组成。该层次结构的底层为内存节点。下一层由内存 Clerk、内存缓存和内存池组成。最后一层由内存对象组成。这些对象通常用于在 SQL Server 实例中分配内存。

  内存节点(sys.dm_os_memory_nodes)提供低级分配器 的界面和实现。在NUMA中内存节点和CPU 节点可以对应起来的,在 SQL Server 中,只有内存 Clerk 可访问内存节点。

   内存 Clerk(sys.dm_os_memory_clerks) 访问内存节点界面以分配内存。内存节点还会跟踪 Clerk 分配的内存以进行诊断。分配大量内存的每个组件,都必须使用 Clerk 界面来创建其自己的内存 Clerk 并分配其全部内存。各组件会在 SQL Server 启动时创建其相应的 Clerk。

  内存对象(sys.dm_os_memory_objects)是指多个堆。它们所提供的分配的粒度比内存 Clerk 所提供的分配的粒度更精细。SQL Server 组件使用内存对象,而不使用内存 Clerk。内存对象使用内存 Clerk 的页分配器 接口来分配页。内存对象不使用虚拟内存接口或共享内存接口。根据分配模式的不同,组件可以创建不同的内存对象类型来分配任意大小的区域。

  SQL Server的缓冲池只提供8KB的内存块;大于8KB的大内存块需求是被单独管理的,且一般是直接从操作系统 或者说是从缓冲池外获取到的,此外只有数据高速缓冲页面才能使用AWE内存,并且需要单独跟踪。

  SQLServer的内存方面的系统视图

SQL Server 2008性能监控

   sys.dm_os_memory_cache_clock_hands 返回特定缓存时钟的每个指针的状态。提供给用户关于每个缓存存储区和用户存储区的时钟指针信息——指针是否正在转动、圈数、被移除的条目数量等。此视图对 于查找当前时钟指针的状态以及时钟指针的移动历史非常有用。

  sys.dm_os_memory_cache_counters 返回缓存运行状况的快照。提供有关已分配的缓存条目、缓存条目的使用情况以及内存源的运行时信息。提供给用户每个存储区的总结信息——使用的内存数量、条 目数、正在使用的条目数。用户可以使用该视图找到缓存的内存使用,以及一个缓存中的条目数量。

   sys.dm_os_memory_cache_hash_tables 针对 SQL Server 实例中的每个活动缓存返回一行。即用户关于缓存存储区的散列表信息——最大、最小、平均桶长等。此视图对于查找缓存存储区中每个缓存表的每个散列桶的条目 分布非常有用。

  sys.dm_os_memory_cache_entries 返回有关缓存中所有条目的信息。使用此视图可对缓存条目进行跟踪,直至它们的关联对象。还可使用此视图获取有关缓存条目的统计信息。

  sys.dm_os_sys_info返回一组有关计算机和有关 SQL Server 可用资源及其已占用资源的有用杂项信息。

  sys.dm_os_sys_memory 从操作系统 返回内存信息。SQL Server 受操作系统级别的外部内存条件和基础硬件物理限制的约束并对其有所响应。确定整个系统的状态是评估 SQL Server 内存使用量的重要方面。

  sys.dm_os_virtual_address_dump则返回有关调用进程的虚拟地址空间中的页范围的信息。

  DBCC MemoryStatus命令提供了SQL Server的当前内存状态的快照,也可以作为我们分析内存瓶颈的重要依据。

  内存压力

SQL Server 2008性能监控

  对于SQL Server占用内存资源的监控主要集中在页面吞吐能力、页面错误和可用内存上上,对虚拟内存的监控,则重点在于分页文件的使用率上。下面提供了几种对象、计数器和相应的阈值及描述。

SQL Server 2008性能监控

  SQL Server提供的sys.dm_os_performance_counters计数器视图,主要对缓冲区管理器和内存管理器的一些计数器进行监控,比如页面的生存周期、检查点、惰性写入器和缓冲命中率等指标。

SQL Server 2008性能监控

  以下为缓冲池内数据库缓冲池中各个数据库的分布情况。

SQL Server 2008性能监控

  以下为返回当前数据库中每个对象的缓存页计数,加以适当的修改我们也可以得到数据缓冲池中对象数据页和索引页的分布情况。

SQL Server 2008性能监控

  以下为缓冲池中前十位消耗内存最大的内存组件。

SQL Server 2008性能监控

  我们需要重点关注的内存组件为以下:

   sys.dm_exec_cached_plans针对 SQL Server 为了加快查询执行而缓存的每个查询计划返回一行。可以用此动态管理视图来查找缓存的查询计划、缓存的查询文本、缓存计划占用的内存量,以及重新使用缓存计 划的计数。同样我们还可以和sys.dm_exec_sql_text联合起来进一步加工获取到缓冲最大的前10条SQL。

  CACHESTORE_SQLCP—SQL执行计划(临时缓存计划、自动参数化计划和预编译计划)

  CACHESTORE_OBJCP—对象计划(存储过程、函数、触发器等执行计划)

  CACHESTORE_PHDR—Bound Trees是在SQL Server中代数化的结构过程,被用于视图、约束和默认值。

  CACHESTORE_XPRO是预定义的系统存储过程,这里仅包含实现过程的函数名称和DLL名称。

  以下SQL用来确认在缓冲区外进行分配了内存的内部组件(即通过多页分配器请求内存),借以了解内存是否存在压力。

SQL Server 2008性能监控

   sys.dm_exec_cached_plans针对 SQL Server 为了加快查询执行而缓存的每个查询计划返回一行。可以用此动态管理视图来查找缓存的查询计划、缓存的查询文本、缓存计划占用的内存量,以及重新使用缓存计 划的计数。同样我们还可以和sys.dm_exec_sql_text联合起来进一步加工获取到缓冲最大的前10条SQL。

SQL Server 2008性能监控

分享到:
评论

相关推荐

    SQL Server 2008内存及IO性能监控

    本文详细介绍了SQLSERVER2008内存及IO性能监控方式

    SQLServer性能监控指标说明.docx

    SQL Server性能监控指标,包括I/O、内存、网络、CPU等各个指标,包括等待事件解析以及常见等待事件的说明以及常用的SQL以及收集频率。

    SQLServer2008内存及I/O性能监控

    以下均是针对Window32位系统环境下,64位的不在下面描述情况下。...CPU的地址线可以直接进行寻址的内存空间大小,在32位操作系统平台上,CPU的最大寻址空间为4GB,也即可以支持最大4G的物理内存空间。在32位操

    Windows下使用性能监视器监控SqlServer的常见指标

    上边文章中提到win的性能监视器是监控数据库性能必备的工具,接下来我就给大家介绍一些常见的监控指标,其实无非就是磁盘,cpu,内存等硬件的运行指标还有数据库自身的像锁啊、用户连接数啊、还有就是根据自身业务...

    基于SpringBoot+Bootstrap实现linux自动化运维监控系统,完美实现了分布式监控

    基于微服务springboot架构开发,是轻量高性能的分布式监控系统,核心采集指标包括:**cpu使用率,cpu温度,内存使用率,磁盘容量,磁盘IO,硬盘SMART健康状态,系统负载,连接数量,网卡流量,硬件系统信息等。...

    八大案例,带你参透SQLServer优化

    工欲善其事,必先利其器。常见的分析性能问题的工具有三种:诊断硬件资源,等待类型,性能语句。硬件资源通常有四个方面判断...这几个性能参数基本上能反映内存问题,观察内存状态。IO监控,性能参数主要为:CurrentDi

    mycat window 安装包

    一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 一个新颖的数据库中间件产品 MYCAT监控 支持对Mycat、Mysql性能监控 支持对Mycat的JVM...

    服务器运行状态监控系统.docx

    主要提供对SQL Server、Oracle等数据库的监控。 (7) 盘符容量监控。选定某一监控盘符后,设置其容量大小,当容量不足时,向Server端发送报警信息。 服务器运行状态监控系统全文共3页,当前为第2页。服务器运行状态...

    服务器运行状态监控系统.doc

    主要提供对SQL Server、Oracle等数据库的监控。 (7) 盘符容量监控。选定某一监控盘符后,设置其容量大小,当容量不足时,向Server端发 送报警信息。 、Server端主要功能 Server端的主要功能是接收Client端发送的数据...

    Siebel 性能微调指南 (中文版)

    分析所生成的 SQL 以找出性能问题 100 Siebel 脚本的最佳惯例 103 使用其它陈述性方式代替 Siebel 脚本 103 实现最佳性能的 Siebel 脚本准则 104 数据对象层的最佳惯例 106 多语言值列表查询和高速缓存性能 106 管理...

    使用sitescope监控weblogic服务

    SiteScope能够监控UNIX服务器资源、Windows服务器资源、Weblogic应用服务器、IIS应用服务器、Oracle数据库、SQLServer数据库、F5、URL地址、Ping、内存、CPU、磁盘空间、服务等等系统架构内各种组建的运行状况;监控...

    WindowsServer2016系统管理视频教程csdn.txt

    6-1使用任务管理器监控内存和CPU的使用情况17:28 6-2使用资源管理器监控性能08:15 6-3性能监视器监控性能指标19:47 6-4管理Windows日志08:52 第7章配置系统安全策略1小时27分钟8节 7-1配置账户密码策略20:21 7-2账户...

    PL/SQL Developer8.04官网程序_keygen_汉化

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    Oracl技术资料(EBook)

    21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始化参数最影响Oracle系统性能 26.你的SQL语句在什么情况下使用全表...

    Oracle数据库学习指南

    21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始化参数最影响Oracle系统性能 26.你的SQL语句在什么情况下使用...

    javaOA办公系统模块设计方案.pdf

    性能监控:监控整个系统的性能,SQL监控,SQL防⽕墙,URL监控,SPRING监控,SESSION监控等 11.⽹络监控:实时监控服务器⽹络接收数据包速度,动态图表展⽰ 12.服务器监控:实时监控jvm内存,服务器内存,CPU使⽤率。...

    用户角色管理项目源码

    3:数据库:兼容MySQL,oracel,sqlserver2008 通用性: 让项目只注重业务,为企业或个人有效率地节约人力资源的成本! 1:系统具有最基本的用户,角色,资源,权限管理,日志管理等通用性功能,企业或个人可直接在...

Global site tag (gtag.js) - Google Analytics