您的位置:首页 > 博客中心 > 数据库 >

疑难杂症--SQL SERVER 2012下数据库内存异常回收

时间:2022-03-10 17:21

--===================================================================

--背景:

在一台SQL SERVER 2012 SP1(11.0.3000)服务器上,由于批处理请求较高,CPU使用率超过40%,于是开始各种调研。。

服务器情况:

服务器物理内存为128GB, 分配给SQL SERVER 115GB,Windows 可用物理内存为6GB左右

压力情况:

批处理请求超过30000+,有大量UPDATE和INSERT操作,CPU使用率超过40%,IO队列在20以上。

--===================================================================

首先查看当前运行的SQL,查看是否有可优化的SQL

gxlsystem.com,布布扣gxlsystem.com,布布扣
--==================================================
--查看正在执行的SQL
SELECT 
s.[session_id],
r.[start_time],
DATEDIFF(SECOND,r.start_time,GETDATE()) AS elapsed_seconds,
r.[status] AS RequestStatus,
DB_NAME(r.database_id) AS DatabaseName,
r.[wait_type],
r.[wait_resource],
r.[wait_time],
r.[reads],
r.[writes],
r.[logical_reads],
s.[status] AS SessionStatus,
s.[host_name],
s.[original_login_name],
s.[nt_user_name],
s.[program_name],
s.[client_interface_name],
c.[client_net_address],
SUBSTRING (qt.text,
             r.statement_start_offset/2,
(CASE WHEN r.statement_end_offset = -1
       THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE r.statement_end_offset END -
r.statement_start_offset)/2) AS ExecutingSQL,
qp.query_plan
FROM sys.dm_exec_requests r
INNER JOIN sys.dm_exec_sessions s
ON r.session_id=s.session_id
LEFT JOIN sys.dm_exec_connections c
ON c.session_id=s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) as qt
CROSS APPLY sys.dm_exec_query_plan(r.plan_handle) as qp
View Code

 经过分析,未发现执行时间较长或耗CPU较多的执行计划,但发现有大量的写日志等待情况和一些等待IO的操作,于是分析IO

gxlsystem.com,布布扣

 

 

疑难杂症--SQL SERVER 2012下数据库内存异常回收,布布扣,bubuko.com

热门排行

今日推荐

热门手游