转载于: http://blog.csdn.net/shutao917/article/details/51444424

SQL SERVER内存按存放数据的类型,大概可以分为三类:

1、buffer pool,存放数据页面的缓冲区,sql server数据都是存放在一个个8K的页面里,当用户需要使用这个页面上的数据时,都是把整个页面加载到内存的buffer pool区缓存起来。

2、各类consumer:

connect:SQL SERVER为每一个客户端连接分配一块内存,用来存储连接的信息,以及发过来的指令和缓存指令结果待待客户端取走

无数据:表、存储过程、索引等的元数据

锁:SQL SERVER中锁是稀有资源,会占用大量内存

Query plan:缓存SQL的执行计划

Optimizer:生成执行 计划过程中需要使用内存

3、线程内存:sql server会为每个线程分配0.5M的内存,用来存放线程的数据结构和相关信息

下面的语句可以统计服务器实例的内存使用情况:

select type,

  • SUM(single_pages_kb)/1024 single_pages_mb,
  • SUM(multi_pages_kb)/1024 multi_pages_mb,
  • SUM(virtual_memory_reserved_kb)/1024 virtual_memory_reserved_mb,
  • SUM(virtual_memory_committed_kb)/1024 virtual_memory_committed_mb,
  • sum(shared_memory_committed_kb)/1024 shared_memory_committed_mb
  • from sys.dm_os_memory_clerks
  • group by type
  • order by 1;

结果如下:

CACHESTORE_OBJCP:存储过程、函数等的执行计划

CACHESTORE_SQLCP:SQL语句的执行计划(这里SQL语句的执行计划占用了多达6G的内存,是因为程序存在大量没有绑定变量的SQL语句,下次再做介绍)

MEMORYCLERK_SQLBUFFERPOOL:Buffer pool

OBJECTSTORE_LOCK_MANAGER:锁

下面再来看下BUFFER POOL中,都缓存了哪些表(当前数据库)的数据:

select OBJECT_NAME(object_id) 表名,COUNT(*) 页数,COUNT(*)*8/1024.0 Mb                              

方法二:使用以下语句查找出什么语句读 内存很高,查处查询语句或过程在进行优化
 
SELECT SS.SUM_EXECUTION_COUNT,
       T.TEXT,
       SS.SUM_TOTAL_ELAPSED_TIME,
       SS.SUM_TOTAL_WORKER_TIME,
       SS.SUM_TOTAL_LOGICAL_READS,
       SS.SUM_TOTAL_LOGICAL_WRITES
FROM (SELECTS.PLAN_HANDLE,
             SUM(S.EXECUTION_COUNT)SUM_EXECUTION_COUNT,
             SUM(S.TOTAL_ELAPSED_TIME)SUM_TOTAL_ELAPSED_TIME,
             SUM(S.TOTAL_WORKER_TIME)SUM_TOTAL_WORKER_TIME,
             SUM(S.TOTAL_LOGICAL_READS)SUM_TOTAL_LOGICAL_READS,
             SUM(S.TOTAL_LOGICAL_WRITES)SUM_TOTAL_LOGICAL_WRITES
       FROM SYS.DM_EXEC_QUERY_STATSS
       GROUP BY S.PLAN_HANDLE
      AS SS
      CROSS APPLY SYS.dm_exec_sql_text(SS.PLAN_HANDLE)T
ORDER BY SUM_TOTAL_LOGICAL_READS DESC

sql server实例内存使用统计的更多相关文章

  1. SQL Server 执行计划利用统计信息对数据行的预估原理以及SQL Server 2014中预估策略的改变

    前提  本文仅讨论SQL Server查询时, 对于非复合统计信息,也即每个字段的统计信息只包含当前列的数据分布的情况下, 在用多个字段进行组合查询的时候,如何根据统计信息去预估行数的. 利用不同字段 ...

  2. SQL Server 2008内存及I/O性能监控

    来源: it168  发布时间: 2011-04-12 11:04  阅读: 10820 次  推荐: 1   原文链接   [收藏]   以下均是针对Window 32位系统环境下,64位的不在下面 ...

  3. Performance Monitor3:监控SQL Server的内存压力

    SQL Server 使用的资源受到操作系统的调度,同时,SQL Server在内部实现了一套调度算法,用于管理从操作系统获取的资源,主要是对内存和CPU资源的调度.一个好的数据库系统,必定在内存中缓 ...

  4. 浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  5. (转)浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  6. 最小配置启动SQL SERVER,更改SQL Server最大内存大小导致不能启动的解决方法

    如果存在配置问题而无法启动服务器,则可以使用最小配置启动选项来启动 Microsoft SQL Server 实例. 这就是启动选项 -f. 使用最小配置启动 SQL Server 实例会自动将服务器 ...

  7. 此数据库文件与当前sql server实例不兼容

    在vs2015导入mdf数据库文件时提示:此数据库文件与当前sql server实例不兼容. mdf文件的版本是SQL SERVER 2005的,而VS2015自带的数据库是LocalDB,直接导入该 ...

  8. 处于同一个域中的两台Sql server 实例无法连接

    处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...

  9. SQL Server占用内存的认识

    SQL Server占用的内存主要由三部分组成:数据缓存(Data Buffer).执行缓存(Procedure Cache).以及SQL Server引擎程序.SQL Server引擎程序所占用缓存 ...

随机推荐

  1. java.lang.IllegalStateException: Cannot run without an instance id.

    启动springboot,报错:quartz集群报错: Sep 09, 2016 5:33:47 AM org.apache.catalina.core.ApplicationContext log ...

  2. 关于在最新的 Visual Studio 2017 版本中使用 Web Deploy 遇到的 SSL 连接错误

    错误信息: 无法完成向远程代理 URL 发送请求.请求被中止: 未能创建 SSL/TLS 安全通道. 原因分析: 最新版本的 Visual Studio 中,已经抛弃了 https 协议中旧版 SSL ...

  3. linux 命令之top

    top命令是显示当前系统正在执行的进程相关信息.包含进程ID.内存占用率等:top命令格式例如以下: top [OPTIONS] OPTIONS: -b 批处理 -c 显示进程的完整名 -I 忽略失效 ...

  4. python多线程应用——DB2数据库备份

    前言:DB2一个实例下,可以存在多个数据库,之前使用shell备份脚本,但是同一时刻只能备份一个数据库,对于几百G的备份文件,这个速度显然太慢,今天学习了Python多线程,刚好应用一下. 分析:1. ...

  5. C语言 sscanf用法详解

    /* sscanf用法详解 */ #include <stdio.h> /* sscanf头文件 */ #include <stdlib.h> #include <str ...

  6. php curl post josn + header

    <meta charset="utf8"> <?php ini_set("max_execution_time",1800000); $arr ...

  7. SpringMVC Controller单例和多例

    对于SpringMVC Controller单例和多例,下面举了个例子说明下. 第一次:类是多例,一个普通属性和一个静态属性. 结果:普通属性:0.............静态属性:0 普通属性:0. ...

  8. unity3d IL2CPP for android

    unity3d 使用IL2Cpp导出android工程报以下错误解决方法 重点是这块 “”System.Reflection.TargetInvocationException: ���õ�Ŀ�귢�� ...

  9. 字符串匹配的 Boyer-Moore 算法

    上一篇文章,我介绍了 字符串匹配的KMP算法 但是,它并不是效率最高的算法,实际采用并不多.各种文本编辑器的” 查找” 功能(Ctrl+F),大多采用 Boyer-Moore 算法. 下面,我根据 M ...

  10. 如何使用LinkedHashMap来实现一个LruCache

    最近在看mybatis的源代码,发现了mybatis中实现的LruCache使用到了LinkedHashMap,所以就探究了一下LinkedHashMap是如何支持Lru缓存的 LinkedHashM ...