文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Sql Server缓冲池、连接池等基本知识详解

2024-09-04 22:43

关注

缓存池

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

缓冲池 (Buffer Pool):

计划缓存 (Plan Cache):

数据缓存 (Data Cache):

一、查看缓存使用情况

-- 查看缓冲池使用情况
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;

截图如下:

Sql Server缓冲池、连接池等基本知识详解

二、清理缓存

-- 清除缓冲池
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');

截图如下:

Sql Server缓冲池、连接池等基本知识详解

连接池

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

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

截图如下:

Sql Server缓冲池、连接池等基本知识详解

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

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

截图如下:

Sql Server缓冲池、连接池等基本知识详解

三、查看连接池信息

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;

截图如下:

Sql Server缓冲池、连接池等基本知识详解

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

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;

截图如下:

Sql Server缓冲池、连接池等基本知识详解

五、查看用户连接数

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

截图如下:

Sql Server缓冲池、连接池等基本知识详解

彩蛋

重启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
BEGIN
    EXEC('KILL ' + @session_id);
    FETCH NEXT FROM session_cursor INTO @session_id;
END

CLOSE 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;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.lsjlt.com)。

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯