我的编程空间,编程开发者的网络收藏夹
学习永远不晚

七、内存优化(3)使用DMV

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

七、内存优化(3)使用DMV

一、sys.dm_os_memory_clerks

1. 查询DMV

sys.dm_os_memory_clerks返回SQL Server实例中当前处于活动状态的全部内存Clerk的集合。跟踪这个DMV,可以看到内存是如何被SQL Server消耗。

select type,

sum(virtual_memory_reserved_kb) as virtual_memory_reserved_sum,

sum(virtual_memory_committed_kb) as virtual_memory_committed_sum,

sum(awe_allocated_kb) as awe_allocated_sum,

sum(shared_memory_reserved_kb) as shared_memory_reserved_sum,

sum(shared_memory_committed_kb) as shared_memory_committed_sum,

sum(multi_pages_kb) as multi_pages_sum,

sum(single_pages_kb) as single_pages_sum

from sys.dm_os_memory_clerks

group by type

order by type


2. 各列的解释

(1)Type

  Momery Clerk的名称。大致可以根据名称猜出内存的用途。


(2)virtual_memory_reserved_sum 和 virtual_memory_committed_sum

virtual_memory_reserved_sum 是内存Clerk Reserve的虚拟内存量。这是由使用此Clerk的组件直接保留的内存量。在多数情况下,只有使用Buffer Pool的内存Clerk才会有这种机制。

virtual_memory_committed_sum 是内存Clerk Commit的虚拟内存量。这是Clerk提交的内存量。提交的内存量应始终小于保留的内存量。这部分内存,主要来自Database Pages。


(3)awe_allocated_sum

  内存Clerk使用AWE分配的内存量。


(4)shared_memory_reserved_sum 和 shared_memory_committed_sum

shared_memory_reserved_sum 是内存Clerk保留的共享内存量。保留以供共享内存和文件映射使用的内存量。

shared_memory_committed_sum 是内存Clerk提交的共享内存量。

  这2个列的值,可以追踪Shared Memory的大小。一般Shared Memory的值都很小。


(5)multi_pages_sum 和 single_pages_sum

multi_pages_sum 是分配的多页内存量。此内存在缓冲池外面分配,也就是传统意义上SQL Server自己的代码使用的Multi-Page的大小。

  single_pages_sum 是通过Stolen Page分配的单页内存量。也就是说,是Buffer Pool里的Stolen Memory的大小。



3. 估算不同内存的大小

(1)Reserved 和 Commit

  即 sum(virtual_memory_reserved_kb) 和 sum(virtual_memory_committed_kb) 。


(2)Stolen

  等于 sum(single_pages_kb) + sum(multi_pages_kb)


(3)Buffer Pool(Single Page)

  等于 sum(virtual_memory_committed_kb) + sum(single_pages_kb)


(4)Multi-Page

  即 sum(multi_pages_kb)



4. 局限性

  通过这个DMV可以看到所有Buffer Pool(或者称为Single Page)的使用,以及Multi-Page里被SQL Server代码用掉的内存。运行在Multi-Page里面的第三方代码所申请的内存是不能被这个视图跟踪的。



二、查看SQL Server缓存的数据页面信息

  通过sys.dm_os_buffer_descriptors,可以查看SQL Server缓冲池中当前所有数据页的信息。

use db01

select b.database_id ,db=DB_NAME(b.database_id) , p.object_id , p.index_id ,

buffer_count = 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 b.database_id ,p.object_id ,p.index_id

order by b.database_id , buffer_count desc



三、查看SQL Server缓存的执行计划信息

  可以通过sys.dm_exec_cached_plans查看执行计划都缓存了哪些内容。

select cacheobjtype,objtype

from sys.dm_exec_cached_plans

group by cacheobjtype,objtype

  通常缓存的执行计划的对象有:Proc(存储过程)、Prepared(预定义语句)、Adhoc(动态查询)、ReplProc(复制筛选过程)、Trigger、View、Default(默认值)、UsrTab(用户表)、SysTab(系统表)、Check(Check约束)、Rule(规则)等。


  通过下面的查询,可以看到各种对象占用了多少内存。

select cacheobjtype,objtype, sum(size_in_bytes) as sum_size_in_bytes,

sum(bucketid) as cache_counts

from sys.dm_exec_cached_plans

group by cacheobjtype,objtype


本文结语

  通过DMV查看的消耗情况,以及缓存的信息。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

七、内存优化(3)使用DMV

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

七、内存优化(3)使用DMV

一、sys.dm_os_memory_clerks1. 查询DMVsys.dm_os_memory_clerks返回SQL Server实例中当前处于活动状态的全部内存Clerk的集合。跟踪这个DMV,可以看到内存是如何被SQL Serve
2023-01-31

HBase与Linux内存使用优化

HBase是一个分布式、面向列的开源数据库存储系统,而Linux是一个广泛使用的开源操作系统。HBase在Linux上运行,因此优化HBase的内存使用也与优化Linux的内存使用密切相关。以下是关于HBase与Linux内存使用优化的相关
HBase与Linux内存使用优化
2024-10-20

SQL级别内存使用优化

SQL级别内存使用优化是通过合理设计和管理SQL查询语句以及数据库表结构来减少内存使用的技术。以下是一些常见的SQL级别内存使用优化技巧:使用索引:在表中创建适当的索引可以加快查询速度,并减少内存使用。索引可以帮助数据库系统更快地定位到需要
SQL级别内存使用优化
2024-08-11

阿里云ECS虚拟内存如何优化内存使用

阿里云ECS虚拟内存是云计算中的一种重要资源,它决定了一个虚拟机可以运行的程序数量和程序的运行速度。然而,如何有效地使用和优化ECS虚拟内存,是每个云用户都需要了解和掌握的技能。本文将详细介绍ECS虚拟内存的使用方法和优化策略。一、什么是阿里云ECS虚拟内存阿里云ECS虚拟内存是指虚拟机在运行时,可以使用的物理内
阿里云ECS虚拟内存如何优化内存使用
2023-11-07

如何让小内存VPS使用更优化

本篇内容主要讲解“如何让小内存VPS使用更优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何让小内存VPS使用更优化”吧!初尝自从今年年初开始尝试使用 VPS 后,就喜欢上了这个折腾。在 V
2023-06-10

使用SQL Server内存优化表 In-Memory OLTP

如果你的系统有高并发的要求,可以尝试使用SQL Server内存优化表来提升你的系统性能。你甚至可以把它当作Redis来使用。要使用内存优化表,首先要在现在数据库中添加一个支持内存优化的文件组。Memory Optimized File Group可以使用下列
2020-09-30

Centos内存的使用以及优化技巧

本篇内容介绍了“Centos内存的使用以及优化技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux服务器分配真实与虚拟内存给处理器,
2023-06-10

MariaDB中如何配置和优化内存使用

要配置和优化MariaDB的内存使用,可以通过以下步骤进行:配置innodb_buffer_pool_size:这是MariaDB中最重要的内存参数之一,它控制InnoDB存储引擎使用的内存量。根据系统的总内存大小,可以将该参数设置为总内存
MariaDB中如何配置和优化内存使用
2024-04-09

MySQL INSERT锁与数据库内存使用的优化

INSERT锁是指在向数据库中插入数据时,系统会对相应的表进行锁定,防止其他操作对该表的影响。这种锁机制可以保证数据的完整性和一致性,但也会对数据库的性能产生一定的影响。为了优化数据库的性能,可以采取以下措施:使用批量插入:在进行大量数据插
MySQL INSERT锁与数据库内存使用的优化
2024-08-13

如何在Couchbase中管理和优化内存使用

在Couchbase中管理和优化内存使用可以通过以下方法:分配合适的内存给Couchbase服务:确保为Couchbase分配足够的内存以容纳数据和索引,同时也要留出一定的内存空间用于系统和操作系统的正常运行。使用内存优化设置:在Couch
如何在Couchbase中管理和优化内存使用
2024-04-09

优化Go语言内存使用的几种技巧

优化Go语言内存使用的几种技巧可以包括以下几个方面:1. 使用指针传递:Go语言中的函数参数传递都是值传递,如果传递大的结构体或者数组,会造成内存拷贝的开销。可以使用指针传递来避免内存拷贝,减少内存使用。2. 使用对象池:在一些需要频繁创建
2023-10-08

如何优化Python占用的内存

概述如果程序处理的数据比较多、比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题。下面我就给出几个优化Python占用内存的几个方法
2023-01-31

服务器内存优化:如何提高服务器内存的使用效率

服务器内存是服务器最重要的硬件资源之一,内存优化对于提高服务器性能至关重要。本文将介绍一些服务器内存优化的方法,帮助您提高服务器内存的使用效率。
服务器内存优化:如何提高服务器内存的使用效率
2024-02-12

如何在Ubuntu中优化Pygame游戏的内存使用

在Ubuntu中优化Pygame游戏的内存使用可以通过以下几种方法:减少图像和资源的大小:使用较小的图像格式(如PNG的压缩版本)和资源,或者只加载游戏所需的图像和资源,而不是一次性加载所有内容。使用对象池:对象池是一种创建和管理游戏对象
如何在Ubuntu中优化Pygame游戏的内存使用
2024-10-15

宝塔面板内存占用率优化

宝塔程序可以帮助我们快速搭建网站,但是笔者有一台服务器,内存只有1GB,装上宝塔后内存所剩无几,只能勉强部署一个小型服务,于是想到“精简”宝塔程序,先说结果: 初始剩余内存:218MB 优化后剩余内存:581MB 下面是具体步骤: 卸载不
2023-08-18

Python中怎么优化占用的内存

今天就跟大家聊聊有关Python中怎么优化占用的内存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Dict使用Python内置的数据结构Dict来实现上述例子的需求很简单。>>> o
2023-06-02

使用内存数据库可以优化服务器性能

使用内存数据库可以优化服务器性能【199cloud-艾娜】内存数据库,其实就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。内存数据库抛弃了磁盘
2023-06-04

如何在Ubuntu中优化Privoxy内存占用

在Ubuntu中优化Privoxy内存占用,你可以考虑以下几个步骤:停止Privoxy服务:使用以下命令停止Privoxy服务:sudo systemctl stop privoxy编辑配置文件:打开Privoxy的配置文件,通常位于/
如何在Ubuntu中优化Privoxy内存占用
2024-10-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录