Какова ваша команда FIRST SQL для устранения проблем производительности SQL Server? - PullRequest
6 голосов
/ 31 марта 2009

Когда SQL Server (2000/2005/2008) работает вяло, какую первую команду вы запускаете, чтобы увидеть, в чем проблема?

Цель этого вопроса состоит в том, что, когда все ответы скомпилированы, другие пользователи могут получить выгоду, выполнив выбранную вами команду, чтобы определить, где может быть проблема. Существуют и другие troubleshooting сообщения, касающиеся производительности SQL Server, но они могут быть полезны только в определенных случаях.

Если вы развернете и запустите свой собственный скрипт SQL,
тогда вы дадите другим знать, что

  • цель сценария равна
  • возвращает (возвращаемое значение)
  • сделать, чтобы выяснить, где проблема

Если вы можете предоставить исходный текст для скрипта, пожалуйста, опубликуйте его.

В моем случае

sp_lock

Я запускаю, чтобы выяснить, существуют ли какие-либо блокировки (цель) для возврата информации о блокировке сервера SQL. Поскольку в результирующем наборе отображаются идентификаторы объектов (таким образом, они не так удобочитаемы для человека), я обычно просматривал бы результат, чтобы увидеть, есть ли ненормально много блокировок.


Не стесняйтесь обновлять теги

Ответы [ 8 ]

2 голосов
/ 31 марта 2009

Зачем запускать один запрос, если картинка стоит тысячи слов!

Я предпочитаю запускать свободно доступные Отчеты панели мониторинга производительности .

Они предоставляют полный обзор снимков производительности ваших серверов за считанные секунды. Затем вы можете выбрать конкретную область для исследования (блокировка, текущие запросы, запросы ожидания и т. Д.), Просто щелкнув соответствующую область на панели инструментов.

http://www.microsoft.com/downloads/details.aspx?FamilyId=1d3a4a0d-7e0c-4730-8204-e419218c1efc&displaylang=en

Одно небольшое предостережение, я полагаю, они доступны только в SQL 2005 и выше.

1 голос
/ 01 апреля 2009

DBCC OPENTRAN , чтобы увидеть, какая самая старая активная транзакция

Отображение информации о самой старой активная транзакция и самая старая распределенный и нераспределенный реплицированные транзакции, если таковые имеются, в указанной базе данных. Результаты отображаются только при наличии активная транзакция или если база данных содержит информацию о репликации. информационное сообщение отображается, если активных транзакций нет.

, за которым следует sp_who2

1 голос
/ 01 апреля 2009

У Яна Стирка есть отличный сценарий, который я люблю использовать, как подробно описано в этой статье: http://msdn2.microsoft.com/en-ca/magazine/cc135978.aspx

В частности, мне нравятся отсутствующие индексы:

SELECT 
    DatabaseName = DB_NAME(database_id)
    ,[Number Indexes Missing] = count(*) 
FROM sys.dm_db_missing_index_details
GROUP BY DB_NAME(database_id)
ORDER BY 2 DESC;
1 голос
/ 31 марта 2009

sp_who3 возвращает выходные данные standand sp_who2 до тех пор, пока вы не укажете конкретный spid, затем выдаст 6 различных наборов записей об этом spid, включая блокировки, блоки, то, чем он в данный момент занимается, выполняемый T / SQL и оператор в T / SQL, который в настоящее время работает.

1 голос
/ 31 марта 2009

Пользовательский запрос, который объединяет то, что вы ожидаете в sp_who с DBCC INPUTBUFFER (spid), чтобы получить последний текст запроса на каждом спиде, упорядоченный по графику блокировки / блокировки.

Данные процесса доступны через master..sysprocesses.

1 голос
/ 31 марта 2009

sp_who_3 - Предоставляет много информации, доступной в другом месте, но в одном хорошем выводе. Также имеет несколько параметров, позволяющих настраивать вывод.

1 голос
/ 31 марта 2009
sp_who

http://msdn.microsoft.com/en-us/library/aa260384(SQL.80).aspx

Я хочу увидеть, кто, какие машины / пользователи работают, какие запросы, сколько времени и т. Д. Я также могу легко сканировать блоки.

Если что-то блокирует кучу других транзакций, я могу использовать spid для выдачи команды уничтожения при необходимости.

0 голосов
/ 31 марта 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...