Настройка производительности SQL - Как? - PullRequest
10 голосов
/ 21 января 2009

Как одна производительность настраивает SQL-запрос?

  • Какие приемы / инструменты / концепции можно использовать для изменения производительности SQL-запроса?
  • Как количественно оценить выгоды?
  • О чем нужно быть осторожным?


Какие приемы / инструменты / концепции можно использовать для изменения производительности SQL-запроса?

  • Использование индексов? Как они работают на практике?
  • Нормализованные или денормализованные данные? Каковы соотношения производительности и дизайна / технического обслуживания?
  • Предварительно обработанные промежуточные таблицы? Создано с помощью триггеров или пакетных заданий?
  • Реструктурировать запрос, чтобы использовать временные таблицы, подзапросы и т. Д.?
  • Разделить сложные запросы на кратные и объединить результаты?
  • Что-нибудь еще?


Как можно измерить производительность?

  • Считывает
  • процессорное время?
  • "% Query Cost", когда разные версии работают вместе?
  • Что-нибудь еще?


О чем нужно быть осторожным?

  • Время генерировать планы выполнения? (Сохраненные запросы и встроенные запросы)
  • Хранимые процессы вынуждены перекомпилировать
  • Тестирование на небольших наборах данных (масштабируются ли запросы линейно, или квадратично, и т. Д.?)
  • Результаты предыдущих запусков в кэше
  • Оптимизация "нормального случая", но вред "худшего случая"
  • Что такое "Измерение параметров"?
  • Что-нибудь еще?


Примечание для модераторов: Это огромный вопрос, я должен был разделить его на несколько вопросов?

Примечание для ответчиков: Поскольку это огромный вопрос, пожалуйста, обращайтесь к другим вопросам / ответам / статьям, а не к длинным объяснениям.

Ответы [ 4 ]

8 голосов
/ 21 января 2009

Мне очень нравится книга "Профессиональная настройка производительности SQL Server 2005", чтобы ответить на этот вопрос. Это Wiley / Wrox, и нет, я не автор, хе. Но это объясняет многое из того, что вы просите здесь, а также проблемы с оборудованием.

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

4 голосов
/ 21 января 2009

Написание запросов sargable - это одна из вещей, которые необходимы: если вы не пишете запросы sargable, оптимизатор не сможет воспользоваться индексами. Вот один пример Только в базе данных вы можете получить 1000% + улучшение, изменив несколько строк кода этот запрос был обработан с 24 часов до 36 секунд

1 голос
/ 21 января 2009

Конечно, вы также должны знать разницу между этими 3 соединениями

соединение цикла, хеш-соединение, объединить присоединиться

см. Здесь: http://msdn.microsoft.com/en-us/library/ms173815.aspx

0 голосов
/ 04 марта 2016

Вот несколько основных шагов, которые мы можем выполнить, чтобы увеличить производительность:

  1. Проверка индексов в pk и fk для задействованных таблиц, если все еще требуется время для индексации столбцов, присутствующих в запросе.
  2. Все индексы изменяются после каждой операции, поэтому не указывайте каждый столбец
  3. Перед пакетной вставкой удалите индексы, а затем заново создайте индексы.
  4. Выберите экономно
  5. Использовать, если существует вместо счетчика
  6. Прежде чем обвинять dba, сначала проверьте сетевые соединения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...