SQL Server 内存开销分析

第一步:

每一类资源用了多少内存。

select
         clerks.type,
         sum(clerks.virtual_memory_reserved_kb) as Reserve,
         sum(clerks.virtual_memory_committed_kb)as [Commit],
         sum(clerks.awe_allocated_kb) as [AWE],
         sum(clerks.shared_memory_reserved_kb) as [Sreserve],
         sum(clerks.shared_memory_committed_kb) as [SCommit]
         from sys.dm_os_memory_clerks as clerks
         group by clerks.type;
         go

第一步可以给我们一种大致上的把握、哪种对角用了、多少内存。

第二步:

sys.dm_os_buffer_descriptors 、返回有关 SQL Server 缓冲池中当前所有数据页的信息。

select dp.database_id,dp.page_type,sum(dp.row_count) as [RowCount]
         from sys.dm_os_buffer_descriptors as dp

where dp.database_id=DB_ID(‘Studio‘)

group by dp.database_id,dp.page_type
         order by dp.database_id;
         go

第三步:

查看执行计划缓存

select plans.usecounts,plans.objtype,plans.size_in_bytes,stt.text
        from sys.dm_exec_cached_plans as plans cross apply sys.dm_exec_sql_text(plans.plan_handle) as stt;
        go

时间: 2024-10-18 19:38:37

SQL Server 内存开销分析的相关文章

SQL Server 内存中OLTP内部机制概述(一)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx ----------------------------我是分割线------------------------------- SQL S

SQL SERVER 内存分配及常见内存问题(2)——DMV查询

原文:SQL SERVER 内存分配及常见内存问题(2)--DMV查询 内存动态管理视图(DMV): 从sys.dm_os_memory_clerks开始. SELECT [type] , SUM(virtual_memory_reserved_kb) AS [VM Reserved] , SUM(virtual_memory_committed_kb) AS [VM Committed] , SUM(awe_allocated_kb) AS [AWE Allocated] , SUM(shar

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

原文:SQL SERVER 内存分配及常见内存问题(1)--简介 一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加: 首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解SQL SERVER与windows是如何协调.共享内存.并且SQL SERVER的内部对内存的管理机制. 2.在Windows 2003以上版本运行的SQL Server,内存使用量突然急剧下降: 内存是Sqlserver的生命线.在errorlog中,出现一下情况:       这类问题往往不是

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

内存管理在SQL Server中有一个三级结构.底部是内存节点,这是最低级的分配器,用于SQL Server的内存.第二个层次是由内存Clerk组成,这是用来访问内存节点和缓存存储,缓存存储则用于缓存.最上层包含内存对象,它提供了一个比内存Clerk更小程度的粒度,内存对象允许直接.只有Clerk可以访问存储节点,来分配内存,所以每一个需要分配大量内存的组件都需要在SQL Server服务启动时创建它自己的内存Clerk. 以前版本的SQL Server需要SQL Server内存分配之外的VA

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

在数据库服务器中,内存是数据库对外提供服务最重要的资源之一, 不仅仅是Sql Server,包括其他数据库,比如Oracle,MySQL等,都是一类非常喜欢内存的应用. 在Sql Server服务器中,最理想的情况是Sql Server把所有所需的数据全部缓存到内存中,但是这往往也是不现实的,因为数据往往总是大于可用的物理内存 可以说内存是否存在压力能够直接决定数据库能否高效运行,同时,如果内存出现压力,同时也会影响到CPU的使用和存储性能,可以说是一损俱损,具有连带性. 那么,如何识别内存是否

SQL Server 内存中OLTP内部机制概述(四)

----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory OLTP Internals Overview>:http://technet.microsoft.com/en-us/library/dn720242.aspx 译者水平有限,如有翻译不当之处,欢迎指正. ----------------------------我是分割线---------------

SQL SERVER 内存学习系列(一)

最近帮客户解决发布订阅的问题时,突然遇到这样一个问题发布订阅中报下面的错误,另外执行alter table 操作时也会报错 : 问题很奇怪发布订阅和CLR有什么关系?memtoleave内存是个啥?回忆学习体系架构的时候,确实看到过memtoleave内存,但是是什么已经完全想不起来了,所以拿起书本回味一下学习的快感... ---------------转载请注明出处------------http://www.cnblogs.com/double-K/p/5049417.html-------

(译)内存沉思:多个名称相关的神秘的SQL Server内存消耗者。

原文:(译)内存沉思:多个名称相关的神秘的SQL Server内存消耗者. 原文出处:https://blogs.msdn.microsoft.com/sqlmeditation/2013/01/01/memory-meditation-the-mysterious-sql-server-memory-consumer-with-many-names/ 对于多个不同名称的内存消费者 你曾经是否想知道内存授予是什么(Memory grants )?什么是查询执行的保留(预定)内存(QE Reser

学习 Sql Server 内存管理之术语理解

在学习sql server 内存管理时,看到一些term:memory node,memory clerk,memory object,非常迷惑,在此将自己的理解记录下来,以便后续学习 1,NUMA架构和memory node 内存节点基于硬件 NUMA 创建,memory node是Numa node内的内存块,属于server物理内存的一部分.Memory Node的作用是使得内存的分配由Windows移交到SQL Server OS层面执行. 查看memory node select *