Проблемы SQL Server 2005 производительности

Это уже там: http://www.onecallnow.com/

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

1
задан 26 January 2012 в 12:38
2 ответа

Ну, Вы могли попытаться выполнить Perfmon и SQL Profiler для получения намного большего понимания этого. Но скажите нам немного больше о Вашей конфигурации диска, во-первых. Вы говорите, что у Вас есть 12 дисков, разделенных на 4 раздела. Это означает, что Вы сделали один большой RAID-массив и сократили его в 4 фактических раздела уровня ОС, или Вы делали 4 контейнера RAID, каждого с одним разделом ОС? Первый - хороший рецепт для плохой производительности.

1
ответ дан 4 December 2019 в 02:11
  • 1
    Привет мы имеют 4 отдельных массива RAID, Набег 1 для ОС, файлов журнала и полнотекстового индекса и совершают рейд 5 для файлов данных –  Jon Leigh 4 March 2010 в 12:54
  • 2
    Хорошо, это исключает важную персону для плохой производительности. RAID-5 isn' t оптимальный для записей, но так как Вашей проблемой являются чтения, that' s не большой красный флаг также. You' ре, собирающееся, должно вырыть в Perfmon и Profiler - и в этой точке я прекращу быть услужливым, потому что я don' t знают, что лучшие счетчики смотрят, первое, что пришло на ум. –  mfinni 4 March 2010 в 16:18

IIRC, единственный выпуск SQL Server 2005, который ограничивает соединения по любой причине, - это Express, и он регулирует только тогда, когда кажется, что одновременных соединений "много". Это' s маловероятно, что кто-то установил Express на мощном сервере или что однопоточное консольное приложение имеет много одновременных подключений.

Если ваши запросы не распараллелены, каждый запрос будет выполняться только на одной из этих машин с восемью (2x4) ядрами, по сути трата остальных семи ядер.

Без других узких мест (IOW, все данные, которые нужны вашим запросам, кэшируются в ОЗУ, и нет никаких блокирующих запросов от чего-то еще), ваши запросы будут использовать 100% одного ядра. Нагрузка на одно «ядро» вашей системы составляет 12,5%. Это похоже на то, что вы видите, если добавить немного дисковой активности.

Если старый сервер достигает 60%, возможно, старый сервер параллелировал (по крайней мере некоторые) запросы, а новый по какой-то причине не распараллеливает запросы.

Я бы использовал Perfmon, чтобы посмотреть нагрузку на процессор по ядрам. Я предполагаю, что вы обнаружите, что один из них на 100% или очень близок к нему. Вы можете обнаружить, что "занятое" ядро ​​меняется с одного на другое. Если все ядра одинаково заняты, происходит нечто более странное. В этом случае я бы определенно захотел поискать ожидания при вводе-выводе файла базы данных. Для этого есть DMV.

Я бы также использовал SSMS для просмотра планов запросов, по крайней мере, для выборки запросов, которые выполняет приложение. Иногда что-то бросается в глаза («Эй, а куда делся этот индекс? Я думал, мы вернули его после обновления» или что-то в этом роде.)

Подводя итог:

  • Убедитесь, что ваш статистика индекса актуальна. (Простой Вы можете обнаружить, что "занятое" ядро ​​меняется с одного на другое. Если все ядра одинаково заняты, происходит нечто более странное. В этом случае я бы определенно захотел поискать ожидания при вводе-выводе файла базы данных. Для этого есть DMV.

    Я бы также использовал SSMS для просмотра планов запросов, по крайней мере, для выборки запросов, которые выполняет приложение. Иногда что-то бросается в глаза («Эй, а куда делся этот индекс? Я думал, мы вернули его после обновления» или что-то в этом роде.)

    Подводя итог:

    • Убедитесь, что ваш статистика индекса актуальна. (Простой Вы можете обнаружить, что "занятое" ядро ​​меняется с одного на другое. Если все ядра одинаково заняты, происходит нечто более странное. В этом случае я бы определенно захотел поискать ожидания при вводе-выводе файла базы данных. Для этого есть DMV.

      Я бы также использовал SSMS для просмотра планов запросов, по крайней мере, для выборки запросов, которые выполняет приложение. Иногда что-то бросается в глаза («Эй, а куда делся этот индекс? Я думал, мы вернули его после обновления» или что-то в этом роде.)

      Подводя итог:

      • Убедитесь, что ваш статистика индекса актуальна. (Простой

        Я бы также использовал SSMS для просмотра планов запросов, по крайней мере, для выборки запросов, выполняемых приложением. Иногда что-то бросается в глаза («Эй, куда делся этот индекс? Я думал, мы вернули его после обновления» или что-то в этом роде.)

        Подводя итог:

        • Убедитесь, что ваш статистика индекса актуальна. (Простой

          Я бы также использовал SSMS для просмотра планов запросов, по крайней мере, для выборки запросов, выполняемых приложением. Иногда что-то бросается в глаза («Эй, а куда делся этот индекс? Я думал, мы вернули его после обновления» или что-то в этом роде.)

          Подводя итог:

          • Убедитесь, что ваш статистика индекса актуальна. (Простой нужно все переиндексировать, если можете.) важно сделать, если вы перешли с SQL2000 SQL2005 как часть вашего Обновить.
          • Ищите блокировку. Если вы их найдете, то следует задать следующие вопросы: «Почему в старой системе все было иначе?» и "Как мне минимизировать блокировку сейчас?"
          • Если вам нужно параллелизировать запросы, убедитесь, что что конфигурация MAXDOP для сервера не была установлена ​​на 1 (по умолчанию 0) дружелюбный администратор базы данных. Это можно настроить на уровень сервера. См. Максимальная степень параллелизма . Независимо от настройки вы можете принудительно распараллеливать запросы. (или нет) с помощью ключевого слова MAXDOP в ваших запросах.
          • Взгляните на планы запросов для этих 36 запросов. Настройте свои запросы и таблицы / индексы.
          • Переработайте однопоточное консольное приложение, чтобы выполнять разные запросы на разных подключений к (возможно) другим потокам, поэтому вы можете запускать более одного вовремя. (Это явно самый сложный и наименее желанный что нужно сделать, предполагая, что у вас даже есть исходный код.)
0
ответ дан 4 December 2019 в 02:11

Теги

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