Don*_*ald 3 sql-server sql-server-2019
我的 SQL Server 2019 SE 在 Windows Server 2019 SE 上运行,硬件规格如下:
40 核 1TB 内存
我认为上述规范是矫枉过正!但如果我从 Windows 任务管理器中看到:
SQL Server 内存使用量为:384GB,处理器使用量为 8 核。
如何将真实的 SQL Server 内存和每分钟 CPU 利用率记录到一个表中,以便我可以分析所需的真实规格是什么?
在 SQL Server 代理中创建一个作业,每分钟按计划运行在
作业中,您可以使用此 T-SQL 来收集当前的 CPU 和内存消耗
宣布
@CPU_Usage_Percentage 整数,
@Total_SQL_Server_Memory_MB int
- 中央处理器
与 y AS (
选择
CONVERT(VARCHAR(5), 100 - ca.c.value('.', 'INT')) AS system_idle,
CONVERT(VARCHAR(30), rb.event_date) AS event_date,
CONVERT(VARCHAR(8000), rb.record) AS 记录
从 (
选择
CONVERT(XML, dorb.record) AS 记录,
DATEADD(ms, (ts.ms_ticks - dorb.timestamp), GETDATE()) AS event_date
FROM sys.dm_os_ring_buffers AS dorb
交叉连接(
选择
dosi.ms_ticks
FROM sys.dm_os_sys_info AS dosi ) AS ts
WHERE dorb.ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
并记录如 '%%' ) AS rb
交叉应用 rb.record.nodes('/Record/SchedulerMonitorEvent/SystemHealth/SystemIdle') AS ca(c)
)
SELECT @CPU_Usage_Percentage = (选择
TOP 1 y.system_idle
从 y
ORDER BY y.event_date DESC)
- 记忆
选择@Total_SQL_Server_Memory_MB =(选择
cntr_value / 1024
来自 sys.dm_os_performance_counters pc
where [object_name] = 'SQLServer:Memory Manager'
和 counter_name = '总服务器内存(KB)'
)
选择
@CPU_Usage_Percentage [CPU_Usage_Percentage],
@Total_SQL_Server_Memory_MB [Total_SQL_Server_Memory_MB]
将@CPU_Usage_Percentage和 的值@Total_SQL_Server_Memory_MB插入日志表,你很好
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |