Идентификация проблем производительности SQL Server

Несколько лет спустя в настоящее время официально существует лучшее решение. DOM4 Mutation Observers заменяют устаревшие события мутации DOM3. Они , которые в настоящее время реализованы в современных браузерах как MutationObserver (или как префикс поставщика WebKitMutationObserver в старых версиях Chrome):

MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

var observer = new MutationObserver(function(mutations, observer) {
    // fired when a mutation occurs
    console.log(mutations, observer);
    // ...
});

// define what element should be observed by the observer
// and what types of mutations trigger the callback
observer.observe(document, {
  subtree: true,
  attributes: true
  //...
});

В этом примере прослушивается DOM изменения на document и все его поддерево, и оно будет срабатывать при изменении атрибутов элемента, а также структурных изменений. Спецификация проекта имеет полный список действительных свойств для прослушивания мутаций :

childList

  • Установите значение true, если мутации для целей дети должны быть обнаружены.

attributes

  • Установите на true, если необходимо соблюдать мутации для атрибутов цели.

characterData

  • Установите на true, если необходимо наблюдать мутации данных цели.

поддерево

  • Установите, чтобы true, если мутации не просто нацелены, но также должны наблюдаться потомки цели.

attributeOldValue

  • Установите значение true если attributes установлено значение true и значение атрибута цели до того, как необходимо записать мутацию.

characterDataOldValue

  • Установите значение true, если characterData установлено значение true и данные цели до того, как необходимо записать мутацию.

attributeFilter

  • Установить список локальных имен атрибутов (без пространства имен) если не все атрибутные мутации
blockquote>

(Этот список действует с апреля 2014 года; вы можете проверить спецификацию на любые изменения.)

9
задан Matt 25 November 2014 в 20:41
поделиться

7 ответов

Это даст Вам лучшие 50 операторов к среднему процессорному времени, проверить здесь на другие сценарии: http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50
        qs.total_worker_time/qs.execution_count as [Avg CPU Time],
        SUBSTRING(qt.text,qs.statement_start_offset/2, 
            (case when qs.statement_end_offset = -1 
            then len(convert(nvarchar(max), qt.text)) * 2 
            else qs.statement_end_offset end -qs.statement_start_offset)/2) 
        as query_text,
        qt.dbid, dbname=db_name(qt.dbid),
        qt.objectid 
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY 
        [Avg CPU Time] DESC
12
ответ дан 4 December 2019 в 07:49
поделиться

Как Yaakov говорит, выполненный профилировщик в течение нескольких минут при типичной загрузке, и сохраните результаты к таблице, которая позволит Вам выполнению запросов против результатов, делающих ее намного легче определить любой ресурс hogging запросы.

3
ответ дан 4 December 2019 в 07:49
поделиться

Мы используем продукт Центра внимания Quest. Очевидно, это - инвестиции вовремя и деньги, таким образом, это не могло бы выручить Вас в ближайшей перспективе, но если Вы, имеют большую среду SQL, это довольно полезно.

3
ответ дан 4 December 2019 в 07:49
поделиться

Я нашел Отчеты Панели инструментов Производительности быть очень полезным. Они - ряд пользовательских отчетов о RS, предоставленных Microsoft. Просто необходимо запустить установщик на клиенте ПК и затем выполнить setup.sql на экземпляре SQL Server.

После этого щелкните правой кнопкой по базе данных (не имеет значения который) в SSMS и Отчетах о goto-> Пользовательские отчеты. Перейдите к и выберите performance_dashboard_main.rdl, который расположен в в \Program папке Files\Microsoft SQL Server\90\Tools\PerformanceDashboard по умолчанию. Только необходимо сделать это однажды. После первого раза это обнаружится в списке отчетов.

Основное представление панели инструментов будет показывать загрузку ЦП со временем, среди прочего. Можно иногда обновлять его. Когда Вы видите скачок, просто нажимаете на панель в графике для получения подробных данных позади него.

4
ответ дан 4 December 2019 в 07:49
поделиться

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

2
ответ дан 4 December 2019 в 07:49
поделиться

Выполненный Профилировщик и фильтр для запросов, которые берут больше, чем определенное число чтений. Для приложения я продолжил работать, любой запрос несоздания отчетов, который взял больше чем 5 000 чтений, заслужил второго взгляда. Ваше приложение может иметь другой порог, но идея является тем же.

2
ответ дан 4 December 2019 в 07:49
поделиться

Эта утилита Erland Sommarskog удивительно полезна.

Это - хранимая процедура, которую Вы добавляете к своей базе данных. Выполните его каждый раз, когда Вы хотите видеть, какие запросы активны и получают хорошее изображение блокировок, блоков, и т.д. Я использую его регулярно, когда вещи кажутся засоренными.

2
ответ дан 4 December 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: