如何知道真实的 SQL Server 内存和 CPU 使用率

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 利用率记录到一个表中,以便我可以分析所需的真实规格是什么?

Ale*_*sko 5

在 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插入日志表,你很好