Я пытаюсь выяснить, насколько занят мой сервер sql 2000 с точки зрения процессора и ввода-вывода с помощью запроса T-SQL.
в настоящее время я использую следующее, чтобы найти использование процессора%:
DECLARE
@CPU_BUSY int
, @IDLE int
SELECT
@CPU_BUSY = @@CPU_BUSY
, @IDLE = @@IDLE
WAITFOR DELAY '00:00:00:500'
SELECT
(@@CPU_BUSY - @CPU_BUSY)/((@@IDLE - @IDLE + @@CPU_BUSY - @CPU_BUSY) *
1.00) *100 AS CPUBusyPct
Однако, когда я пытаюсь подобным способом найти IO, я получаю очень низкие значения IO, когда я знаю, что сервер находится под нагрузкой:
DECLARE
@IO_BUSY int
@IDLE int
SELECT
@IO_BUSY = @@IO_BUSY
, @IDLE = @@IDLE
WAITFOR DELAY '00:00:00:500'
SELECT
(@@IO_BUSY - @IO_BUSY)/((@@IDLE - @IDLE + @@IO_BUSY - @IO_BUSY) *
1.00) *100 AS IOBusyPct
Являются ли эти методы правильными для разумной оценки уровней нагрузки сервера за период времени 500 мс?
Какие-нибудь лучшие предложения?
Я пробовал sp_monitor, но вызывая его каждую 1 секунду, получаю странные результаты, когда% превышает 100