Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье представлены средства статистики производительности для средства чтения журналов репликации и агент распространения в SQL Server.
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 2892631
Введение
Статистика производительности добавлена в mslogreader_history таблицу и msdistribution_history таблицу базы данных распространителя в Microsoft SQL Server. Эти статистические данные можно использовать для просмотра последней истории производительности агентов чтения журналов репликации и распространителя репликации.
Примечание.
Эти изменения были впервые внесены в следующие сборки SQL Server:
- 9.00.4220
- 9.00.3315
- 10.00.1806
- 10.00.2714
Каждые пять минут статистика производительности для агентов чтения журналов и распространителя записывается в таблицы журнала. По умолчанию сохраняются только данные за последние 48 часов. Процесс очистки удаляет данные старше 48 часов. Значение по умолчанию можно изменить, выполнив sp_changedistributiondb хранимую процедуру и указав новое значение параметра history_retention .
Ниже приведен пример выходных данных производительности из таблицы журнала для агента чтения журналов:
<stats state="1" work="9" idle="295"> <reader fetch="8" wait="0"/> <writer write="9" wait="0"/> <sincelaststats elapsedtime="304" work="9" cmds="52596" cmdspersec="5753.000000"> <reader fetch="8" wait="0"/> <writer write="9" wait="0"/> </sincelaststats> </stats>
Существует три события состояния, которые можно записать:
| State | описание |
|---|---|
| 1 | Обычные события, описывающие производительность потока чтения и записи. |
| 2 | Возникают события, возникающие при ожидании потока чтения агента дольше времени агента -messageinterval . (По умолчанию время составляет 60 секунд.) Если вы заметили, что события состояния 2, записанные для агента, это означает, что агент занимает много времени для записи изменений в место назначения. |
| 3 | Вызываемые события, созданные только агентом чтения журналов, когда поток записи ожидает больше времени -messageinterval . Если вы заметили, что события состояния 3, записанные для агента чтения журналов, это означает, что агент занимает много времени для сканирования реплицированных изменений из журнала транзакций. |
поток чтения агент распространения
В следующей статистике производительности показана ситуация, в которой задержка в топологии репликации и в которой узкие места являются потоком чтения агент распространения. Этот поток запрашивает базу данных распространителя (<сервер> распространения.). MSdistribution_history. Таблица примечаний) для команд, применяемых на подписчике.
<stats state="1" work="14798" idle="2035">
<reader fetch="14798" wait="193"/>
<writer write="12373" wait="9888"/>
<sincelaststats elapsedtime="424" work="415" cmds="296900" cmdspersec="713.000000">
<reader fetch="415" wait="7"/>
<writer write="377" wait="212"/>
</sincelaststats>
</stats>
Время sincelaststats ожидания записи (212 секунд) отображается высоким. Это время, когда поток записи ожидает, чтобы поток чтения предоставлял буферы, которые поток записи может применяться в базе данных подписчика. Поток чтения агент распространения выполняет хранимую процедуруsp_MSget_repl_commands.
Если вы заметили время ожидания записи в статистике производительности агент распространения, следует изучить производительность агент распространения выполнения на сервере распространителя и базе данных. В частности, следует исследовать время выполнения хранимой sp_MSget_repl_commands процедуры.
поток записи агент распространения
В следующей статистике производительности показана ситуация, в которой задержка в топологии репликации и в которой узкие места являются потоком чтения агент распространения. Этот поток запрашивает базу данных распространителя (<сервер> распространения.). MSdistribution_history. Таблица примечаний) для команд, применяемых на подписчике.
Примечание.
Состояние равно 2, и выходные данные несколько отличаются от статистики состояния 1. Данные состояния 2 указывают на то, что поток чтения должен был ожидать больше времени, чем настроенное -messageinterval значение агент распространения. По умолчанию -messageinterval значение равно 60 секундам.
<stats state="2" fetch="48" wait="384" cmds="1028" callstogetreplcmds="321">
<sincelaststats elapsedtime="312" fetch="47" wait="284" cmds="1028" cmdspersec="3.000000"/>
</stats>
-messageinterval Если значение увеличено, вы можете снова получить статистику состояния 1, похожую на следующую:
<stats state="1" work="1941" idle="0">
<reader fetch="717" wait="1225"/>
<writer write="1941" wait="134"/>
<sincelaststats elapsedtime="764" work="764" cmds="1170730" cmdspersec="1530.000000">
<reader fetch="258" wait="505"/>
<writer write="764" wait="50"/>
</sincelaststats>
</stats>
Примечание.
С момента получения значения времени ожидания 505 секунд очень высока.
Если вы заметили время ожидания чтения в статистике производительности агент распространения, следует изучить производительность агент распространения выполнения на сервере подписчика и базе данных. Используйте средство трассировки профилировщика для исследования производительности выполнения хранимых процедур репликации. Обычно хранимые процедуры называются следующим образом:
- <sp_MSupd_ownertablename>
- <sp_MSins_ownertablename>
- <sp_MSdel_ownertablename>
Кроме того, чтобы определить, является ли узкий место аппаратным или системным, используйте монитор производительности для мониторинга производительности системы. Например, используйте монитор производительности для мониторинга счетчиков физических дисков.
Поток чтения агента чтения журналов
В следующей статистике производительности показана ситуация, в которой задержка в топологии репликации и в которой узким местом является поток чтения агента чтения журналов. Поток чтения агента чтения журналов сканирует опубликованный журнал транзакций базы данных, чтобы команды доставлялись в базу данных распространителя.
<Distribution server>..MSlogreader_history.Comments
<stats state="1" work="301" idle="0" >
<reader fetch="278" wait="0"/>
<writer write="12" wait="288"/>
<sincelaststats elapsedtime="301" work="301" cmds="104500" cmdspersec="347.000000">
<reader fetch="278" wait="0"/>
<writer write="12" wait="288"/>
</sincelaststats>
</stats>
Статистика ожидания записи с момента взрыва 288 секунд появляется высокой. Это время, когда поток записи ожидает применения буферов чтения. Поток чтения агента чтения журналов выполняет хранимую процедуру sp_replcmds . Если вы заметили, что потоки ожидания с высоким уровнем записи в статистике производительности агента чтения журналов следует исследовать производительность агента чтения журналов на сервере публикации и базе данных, а затем исследовать время sp_replcmds выполнения хранимой процедуры.
Ниже приведено описание каждой статистики производительности:
| Статистический показатель | State | Description |
|---|---|---|
| Область | Состояние 1. Это состояние означает, что отчет о производительности обычно выполняется после пакетной фиксации. Состояние 2. Поток чтения указывает, что пакетное чтение ожидает больше времени, чем значение свойства messageinterval .Состояние 3. Поток записи указывает, что пакетная запись ожидает больше времени, чем -messageinterval значение. |
|
| cmds | Только 2 | Это состояние указывает количество команд, считываемых агент распространения. |
| callstogetreplcmds | Только 2 | Это состояние указывает количество вызовов хранимой sp_MSget_repl_commands процедуры агент распространения. |
| рабочий | Значение представляет совокупное время, затраченное агентом на работу с момента последнего запуска агента. Время исключает время простоя. | |
| бездействует | Значение представляет совокупное время, которое агент ожидает вызова sp_replcmds хранимой процедуры, когда предыдущий вызов не возвращает транзакций или когда число транзакций меньше значения свойства MaxTrans с момента последнего запуска агента. |
|
| Получение средства чтения | Значение представляет совокупное время, затраченное средством чтения с момента последнего запуска агента. Время ожидания исключает время простоя и время ожидания для записи. | |
| Ожидание средства чтения | Значение представляет совокупное время записи ожидания для записи с момента последнего запуска агента. Значение показывает время, затраченное на ожидание завершения потока записи с помощью буфера данных, прежде чем читатель сможет заполнить буфер данных еще раз. | |
| запись записи записи | Значение представляет совокупное время, затраченное средством записи с момента последнего запуска агента. Время ожидания исключает время простоя и время ожидания для чтения. Для ожидания записи это значение представляет время ожидания для чтения с момента последнего запуска агента. Значение показывает время, затраченное на ожидание завершения заполнения буфера данных потоком чтения, прежде чем модуль записи сможет применить буфер данных. |
|
| sincelaststats_elapsed_time | Узел sincelaststats отображает аналогичную статистику за период, начиная с последнего записанного события статистики. По умолчанию период составляет пять минут. Время исключает время простоя. Значение представляет время, прошедшее с момента последнего записанного события статистики. | |
| с момента работы сlaststats | Значение представляет время, затраченное агентом с момента последнего события статистики. | |
| cmds sincelaststats | Значение представляет количество команд с момента последнего события статистики. | |
| sincelaststats cmdspersec | Значение представляет количество команд, выполняемых в секунду с момента последнего события статистики. | |
| sincelaststats\reader извлекает | Значение представляет совокупное время, затраченное читателем с момента последнего события статистики. Время ожидания исключает время простоя и время ожидания для записи. | |
| с момента ожиданияlaststats\reader | Значение представляет совокупное время записи ожидания для записи с момента последнего события статистики. Значение показывает время, затраченное на ожидание завершения потока записи с помощью буфера данных, прежде чем читатель сможет заполнить буфер данных еще раз. | |
| sincelaststats\writer | Значение представляет совокупное время записи, затраченное с момента последнего события статистики. Время ожидания исключает время простоя и время ожидания для чтения. | |
| с момента ожиданияlaststats\writer | Значение представляет время ожидания для чтения с момента последнего события статистики. Значение показывает время, затраченное на ожидание завершения заполнения буфера данных потоком чтения, прежде чем модуль записи может применить буфер данных. |