转载于: 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. 获取当前网页的绝对URL地址

    通过创建一个虚拟的<a></a>元素,将它的href指定为相对URL,再读取它的href就会得到绝对URL. var getAbsoluteUrl = (function() ...

  2. ios 容错处理JKDataHelper和AvoidCrash

    一.JKDataHelper 在大团队协同开发过程中,由于每个团队成员的水平不一,很难控制代码的质量,保证代码的健壮性,经常会发生由于后台返回异常数据造成app崩溃闪退的情况,为了避免这样情况使用JK ...

  3. 单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例(一)

    本文是续 单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境编写的. 本范例主要由(main.c ,delay.h,delay.c,makefile)4个文件组成,s ...

  4. Saltstack之Scheduler

    一.引言: 在日常的运维工作中经常会遇到需要定时定点启动任务,首先会考虑到crontab,但是通过crontab的话需要每台机器下进行设置,这样统一管理的话比较复杂:通过查百度和google发现sal ...

  5. Android 异常 android.os.NetworkOnMainThreadException

    近期在实现一个Android下的数据採集的SDK,收集用户使用数据使用HTTP发送到云平台.进行数据分析.但在发送数据时报例如以下错误: Caused by: android.os.NetworkOn ...

  6. Android CPU类型及预定义的宏

    [时间:2019-02] [状态:Open] [关键词:android,cpu, armeabi, armeabi-v7a, arm64-v8a, 32位,64位,c/c++] 本文主要总结下前段时间 ...

  7. 15个最佳的 JavaScript 表单验证库

    客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...

  8. System.Net.HttpWebRequest.GetResponse() 远程服务器

    WebException 服务器状态码错误,比如500服务器内部错误 现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebReques ...

  9. windows上RSA密钥生成和使用

    一,下载安装windows平台openssl密钥生成工具,执行安装目录bin下的"openssl.exe",执行后弹出命令窗口如下 运行 二,生成私钥 输入"genrsa ...

  10. HTTP 06 用户认证

    SSL 客户端认证具有高度的安全等级, 但是因为导入及维持费用等问题, 还未普及. 认证的方式有很多种, 多半是 基于表单的认证(即用户名/密码的方式) Session 管理及 Cookie 应用 基 ...