疑难杂症--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
--================================================== --查看正在执行的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 qpView Code
经过分析,未发现执行时间较长或耗CPU较多的执行计划,但发现有大量的写日志等待情况和一些等待IO的操作,于是分析IO
疑难杂症--SQL SERVER 2012下数据库内存异常回收,布布扣,bubuko.com