查看SqlServer的内存使用情况

摘要:
sum(virtual_memory_reserved_kb)VM_保留,sum(virtual_memory_committed_kb)VM_committed,sum,

      上一篇提到动态T-SQL会产生较多的执行计划,这些执行计划会占用多少内存呢?今天从徐海蔚的书中找到了答案。动态视图不仅可以查到执行计划的缓存,数据表的页面缓存也可以查到,将SQL整理一下,做个标记。

-- 查询SqlServer总体的内存使用情况
select      type
        , sum(virtual_memory_reserved_kb) VM_Reserved
        , sum(virtual_memory_committed_kb) VM_Commited
        , sum(awe_allocated_kb) AWE_Allocated
        , sum(shared_memory_reserved_kb) Shared_Reserved
        , sum(shared_memory_committed_kb) Shared_Commited
        --, sum(single_pages_kb)    --SQL2005、2008
        --, sum(multi_pages_kb)        --SQL2005、2008
from    sys.dm_os_memory_clerks
group by type
order by type


-- 查询当前数据库缓存的所有数据页面,哪些数据表,缓存的数据页面数量
-- 从这些信息可以看出,系统经常要访问的都是哪些表,有多大?
select p.object_id, object_name=object_name(p.object_id), p.index_id, buffer_pages=count(*) 
from sys.allocation_units a, 
    sys.dm_os_buffer_descriptors b, 
    sys.partitions p 
where a.allocation_unit_id=b.allocation_unit_id 
    and a.container_id=p.hobt_id 
    and b.database_id=db_id()
group by p.object_id,p.index_id 
order by buffer_pages desc 


-- 查询缓存的各类执行计划,及分别占了多少内存
-- 可以对比动态查询与参数化SQL(预定义语句)的缓存量
select    cacheobjtype
        , objtype
        , sum(cast(size_in_bytes as bigint))/1024 as size_in_kb
        , count(bucketid) as cache_count
from    sys.dm_exec_cached_plans
group by cacheobjtype, objtype
order by cacheobjtype, objtype


-- 查询缓存中具体的执行计划,及对应的SQL
-- 将此结果按照数据表或SQL进行统计,可以作为基线,调整索引时考虑
-- 查询结果会很大,注意将结果集输出到表或文件中
SELECT  usecounts ,
        refcounts ,
        size_in_bytes ,
        cacheobjtype ,
        objtype ,
        TEXT
FROM    sys.dm_exec_cached_plans cp
        CROSS APPLY sys.dm_exec_sql_text(plan_handle)
ORDER BY objtype DESC ;
GO

免责声明:文章转载自《查看SqlServer的内存使用情况》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VLOOKUP+IF 组合用法Xcode模板修改下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

倾听程序员

     我是一名即将毕业的大学生,在不久的几个月后我将踏上程序员这一职业,今天看到这篇文章,很有感想。      **********************************************      我们每个人都对自己的未来有所思量,因为我们每个人都怀揣着高远的梦想,我们每天都在打理着我们的生活,日复一日,年复一年。   有人说,人生最...

Druid.io系列(八):部署

介绍 前面几个章节对Druid的整体架构做了简单的说明,本文主要描述如何部署Druid的环境 Imply提供了一套完整的部署方式,包括依赖库,Druid,图形化的数据展示页面,SQL查询组件等。本文将基于Imply套件进行说明 单机部署 依赖 Java 8 or better Node.js 4.5.x or better Linux, Mac OS...

[转]mysql 存储过程中使用多游标

From : http://www.netingcn.com/mysql-procedure-muti-cursor.html mysql的存储过程可以很方便使用游标来实现一些功能,存储过程的写法大致如下: 先创建一张表,插入一些测试数据: DROP TABLE IF EXISTS netingcn_proc_test; CREATE TABLE `...

Cypress web自动化23-cypress run 命令行参数详解

前言 非 GUI 模式下命令行运行 cypress,需知道有哪些参数可以使用。 查看命令行参数 输入 -h 查看命令行参数 cypress run -h Runs Cypress tests from the CLI without the GUI Options: -b, --browser <browser-name-or-path>...

Nginx日志运维笔记

在分析服务器运行情况和业务数据时,nginx日志是非常可靠的数据来源,而掌握常用的nginx日志分析命令的应用技巧则有着事半功倍的作用,可以快速进行定位和统计。 1)Nginx日志的标准格式(可参考:http://www.cnblogs.com/kevingrace/p/5893499.html) log_format main '$remote_ad...

mysql last_insert_id() (转载)

先来看看官方的说明 The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_I...