Sql Server缓冲池、连接池等基本知识(附Demo)

目录

  • 前言
  • 1. 缓存池
  • 2. 连接池
  • 3. 彩蛋

前言

基本的知识推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. Mysql优化高级篇(全)
  3. Mysql底层原理详细剖析+常见面试题(全)

1. 缓存池

缓存机制是指将经常访问的数据或查询结果保存在内存中,以提高查询性能和整体系统响应速度

  • 缓冲池 (Buffer Pool):
    SQL Server 中最大的一块内存区域,用于存储从磁盘读取的页,以减少对磁盘的直接访问
    缓冲池中的页包括数据页、索引页、系统表页等

  • 计划缓存 (Plan Cache):
    将执行过的查询计划缓存在计划缓存中,以便重复使用,减少查询解析和优化的开销
    查询计划是查询优化器生成的执行查询的步骤

  • 数据缓存 (Data Cache):
    数据缓存是缓冲池的一部分,专门用于缓存数据页
    当查询访问表中的数据时,SQL Server 会首先检查数据缓存,如果数据已经在缓存中,则直接返回,否则从磁盘读取并缓存

一、查看缓存使用情况:

-- 查看缓冲池使用情况
DBCC DROPCLEANBUFFERS;  -- 清除缓冲池SELECT COUNT(*) AS cached_pages_count,(COUNT(*) * 8.0) / 1024 AS cached_pages_in_MB
FROM sys.dm_os_buffer_descriptors
WHERE database_id = DB_ID('YourDatabaseName');-- 查看计划缓存使用情况
SELECT cp.objtype AS [CacheType],OBJECT_NAME(st.objectid, st.dbid) AS [ObjectName],cp.usecounts AS [ExecutionCount],st.text AS [QueryText],cp.size_in_bytes / 1024 AS [SizeInKB]
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st
WHERE cp.cacheobjtype = 'Compiled Plan'
ORDER BY cp.usecounts DESC;

截图如下:

在这里插入图片描述

二、 清理缓存:

-- 清除缓冲池
DBCC DROPCLEANBUFFERS;-- 清除计划缓存
DBCC FREEPROCCACHE;-- 清除数据缓存
CHECKPOINT;
DBCC DROPCLEANBUFFERS;

三、监控缓存命中率:

-- 缓冲池命中率
SELECT object_name, counter_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Buffer cache hit ratio', 'Buffer cache hit ratio base');

截图如下:

在这里插入图片描述

2. 连接池

一、查看当前活动的连接数:

SELECT DB_NAME(dbid) AS DatabaseName,COUNT(dbid) AS NumberOfConnections
FROM sys.sysprocesses
WHERE dbid > 0
GROUP BY dbid;

截图如下:

在这里插入图片描述

二、查看当前连接的具体信息:

SELECT spid,ecid,status,loginame,hostname,db_name(dbid) AS DatabaseName,cmd,request_id
FROM sys.sysprocesses;

截图如下:

在这里插入图片描述

三、查看连接池信息:

SELECT pool_id,min_memory_percent,max_memory_percent,used_memory_kb,target_memory_kb,max_memory_kb
FROM sys.dm_resource_governor_resource_pools;

截图如下:

在这里插入图片描述

四、查看每个连接的详细信息:

SELECT session_id,login_time,host_name,program_name,client_interface_name,login_name,status,cpu_time,memory_usage,logical_reads,writes,reads
FROM sys.dm_exec_sessions;

截图如下:

在这里插入图片描述

五、查看用户连接数:

SELECT login_name,
Count(0) user_count
FROM Sys.dm_exec_requests dr WITH(nolock)
RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH(nolock)
ON dr.session_id = ds.session_id
RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH(nolock)
ON ds.session_id = dc.session_id
WHERE ds.session_id > 50
GROUP BY login_name
ORDER BY user_count DESC

截图如下:

在这里插入图片描述

3. 彩蛋

重启Mysql不行,反而重启服务器才可以,考虑是否应用有死锁,导致应用在争夺资源

如果连接池信息满了,考虑如下方式重置资源池

ALTER RESOURCE POOL pool_name
WITH (MIN_MEMORY_PERCENT = 0,MAX_MEMORY_PERCENT = 100
);

重置资源配置调度:ALTER RESOURCE GOVERNOR RECONFIGURE;

通过KILL的方式来清空连接:

DECLARE @session_id INT;DECLARE session_cursor CURSOR FOR
SELECT session_id 
FROM sys.dm_exec_sessions
WHERE session_id != @@SPID AND is_user_process = 1;OPEN session_cursor;FETCH NEXT FROM session_cursor INTO @session_id;WHILE @@FETCH_STATUS = 0
BEGINEXEC('KILL ' + @session_id);FETCH NEXT FROM session_cursor INTO @session_id;
ENDCLOSE session_cursor;
DEALLOCATE session_cursor;

如果当前资源池的内存限制太低,可以增加这两个参数:

ALTER RESOURCE POOL pool_name
WITH (MIN_MEMORY_PERCENT = new_min_memory_percent,MAX_MEMORY_PERCENT = new_max_memory_percent
);
ALTER RESOURCE GOVERNOR RECONFIGURE;

还可分配更多的资源给高优先级的任务:(调整工作负载组的配置,以确保高优先级任务获得更多资源)

ALTER WORKLOAD GROUP group_name
USING pool_name;
ALTER RESOURCE GOVERNOR RECONFIGURE;

最终还需监控和优化

  • 监控资源使用情况:定期监控资源池的资源使用情况,确保配置合理
SELECT pool_id,min_memory_percent,max_memory_percent,used_memory_kb,target_memory_kb,max_memory_kb
FROM sys.dm_resource_governor_resource_pools;
  • 优化查询和索引:优化查询和索引,减少资源消耗

  • 定期维护和清理:定期维护数据库,清理不必要的数据和索引,释放资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VSCode】安装 【ESP-IDF】插件及【ESP32-S3】新建工程和工程配置

一、搭建基础工程 二、基础工程的文件架构解析 三、调试相关工具介绍 1、串口下载2、JTAG 下载与调试 四、工程的文件架构解析 五、基础工程配置 一、搭建基础工程 在 VS Code 中新建 ESP-IDF 基础工程的步骤如下: 1、启动 VS Code 并打开命令面板 按下“Ctrl…

逆向案例二十八——某高考志愿网异步请求头参数加密,以及webpack

网址:aHR0cDovL3d3dy54aW5nYW9rYW90Yi5jb20vY29sbGVnZXMvc2VhcmNo 抓包分析,发现请求头有参数u-sign是加密的,载荷没有进行加密,直接跟栈分析。 进入第二个栈,打上断点,分析有没有加密位置。 可以看到参数…

Chapter17 表面着色器——Shader入门精要学习

Chapter17 表面着色器 一、编译指令1.表面函数2.光照函数3.其他可选参数 二、两个结构体1.Input 结构体:数据来源2.SurfaceOutput 三、Unity背后做了什么四、表面着色器的缺点 一、编译指令 作用:指明该表面着色器的 表面函数 和 光照函数,并…

DPDK收包流程和Linux内核收包流程对比

DPDK 网卡收包流程-腾讯云开发者社区-腾讯云NIC 在接收到数据包之后,首先需要将数据同步到内核中,这中间的桥梁是 rx ring buffer。它是由 NIC 和驱动程序共享的一片区域,事实上,rx ring buffer 存储的并不是实际的 packet 数据&a…

【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(上)

【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(上) 大家好 我是寸铁👊 【Gin】精准应用:Gin框架中工厂模式的现代软件开发策略与实施技巧(上)✨ 喜欢的小伙伴可以点点关注 💝 前言 本次文章分为上下两部分&…

【RaspberryPi】树莓派系统UI优化

接上文,如何去定制一个树莓派的桌面系统,还是以CM4为例。 解除CM4上电USB无法使用问题 将烧录好的tf卡通过读卡器插入到电脑上,进入boot磁盘,里面有一个Config文件,双击用记事本打开,在【pi4】一栏里加入一…

uboot 设置bootargs配置内核网络挂载根文件系统

uboot 设置bootargs配置内核网络挂载根文件系统 uboot设置bootargs env set bootargs "mem256M consolettyAMA0,115200 root/dev/nfs init/linuxrc nfsrootnfs主机地址:nfs路径/busybox/rootfs_glibc_arm64,prototcp rw nfsvers3 rootwait ip板子地址:nfs主机地址:网关:2…

C#与C++交互开发系列(六):同一个项目中使用C#和C++进行混合模式开发

欢迎来到C#与C交互开发系列的第六篇。在这篇博客中,我们将探讨混合编程,即在同一个项目中结合使用C#和C。在同一个项目中同时使用C/CLI和P/Invoke来实现C#与C的互操作。C/CLI提供了直接访问托管代码的能力,而P/Invoke则用于调用现有的C库函数…

网络安全防御--加密技术及身份、数据认证

VPN概述 VPN诞生的原因 1,物理专线成本高,在位置不固定的情况下,难以实现 2,直接将服务器开放到公网,不安全 VPN --- 虚拟专用网 --- 是指依靠ISP或者其他NSP或者企业自身,构建的专用的安全的数据通信网络&…

基于YOLO8的目标检测系统:开启智能视觉识别之旅

文章目录 在线体验快速开始一、项目介绍篇1.1 YOLO81.2 ultralytics1.3 模块介绍1.3.1 scan_task1.3.2 scan_taskflow.py1.3.3 target_dec_app.py 二、核心代码介绍篇2.1 target_dec_app.py2.2 scan_taskflow.py 三、结语 在线体验 基于YOLO8的目标检测系统 基于opencv的摄像头…

敏捷CSM认证:精通敏捷Scum估算方法,高效完成项目!

咱们做项目的时候可能都遇到过这种情况:项目一开始信心满满,觉得 deadline 稳了。结果呢?各种意外状况频出,时间好像怎么都不够用了,最后项目只能无奈延期,整个团队都像霜打的茄子。 说到底,还…

谷粒商城实战笔记-44-前端基础-Vue-整合ElementUI快速开发/设置模板代码

文章目录 一,安装导入ElementUI1,安装 element-ui2,导入 element-ui 二,ElementUI 实战1,将 App.vue 改为 element-ui 中的后台布局2,开发导航栏2.1 开发MyTable组件2.2 注册路由2.3 改造App.vue2.4 新增左…

Qt实现简易CAD软件的开发:技术解析与实现

文章目录 简易CAD软件的开发:技术解析与实现引言项目概述程序入口主窗口的实现主窗口类定义(mainwindow.h)主窗口类实现(mainwindow.cpp) 自定义绘图视图自定义绘图视图类定义(myqgraphicsview.h&#xff0…

深入浅出C语言指针(进阶篇)

深入浅出C语言指针(基础篇) 深入浅出C语言指针(进阶篇) 目录 引言 一、指针和数组 1.数组名的理解 2.指针访问数组 3.一维数组传参的本质 二、二级指针 1.二级指针的概念 2.二级指针的内存表示 3.二级指针的解引用 三、字符指针 1.指针指向单个字符 2.指针指向字…

便携式自动气象站:科技赋能气象观测

便携式自动气象站,顾名思义,就是一款集成了多种气象传感器,能够自动进行气象观测和数据记录的设备。它体积小巧、重量轻,便于携带和快速部署,可以在各种环境下进行气象数据的实时监测。同时,通过内置的无线…

版本更新 | Orillusion 0.8发布,与大家同在!

过了这么久,我们Orillusion引擎的大版本更新终于来啦! 这次的版本发布,大部分是更新了引擎底层能力,有兴趣的小伙伴可以直接查看: 🔗 https://github.com/Orillusion/orillusion 其实面对社区的小伙伴&…

应对爬虫过程中代理IP掉线的实用指南

当代理IP在爬虫中频繁掉线时,我们先要了解出现问题的可能原因,这不仅限于技术性因素,还涉及操作策略和环境因素。只有在找到具体原因后,才能针对问题类型从源头解决IP掉线问题。 一、问题原因: 1. 代理IP质量问题导致…

Python将字典转换为DataFrame的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

AWS监控工具,监控性能指标

执行AWS监视是为了跟踪在AWS环境中主动运行的应用程序工作负载和资源,AWS监视器跟踪各种AWS云指标,以帮助提高在其上运行的应用程序的整体性能。 借助阈值突破警报系统,AWS应用程序监控在识别性能瓶颈来源方面起着至关重要的作用&#xff0c…

力扣高频SQL 50题(基础版)第五题

文章目录 力扣高频SQL 50题(基础版)第五题1683. 无效的推文题目说明:思路分析:实现过程:结果截图: 力扣高频SQL 50题(基础版)第五题 1683. 无效的推文 题目说明: 表&a…