Какие инструменты доступны для проверки производительности операторов SQL? - PullRequest
7 голосов
/ 12 октября 2009

В бесконечном поиске производительности (и моем собственном опыте хулиганства) я узнал несколько вещей, которые могут снизить производительность оператора SQL.

обсессивно-компульсивное расстройство подзапросов
Делать сумасшедшие преобразования типов (и вкладывать их в забвение)
Сгруппировать по агрегатным функциям указанных сумасшедших преобразований типов
Где fldID в (выберите ВСЕ из моей таблицы рекордов 5mil)

Обычно я работаю с MSSQL. Какие инструменты доступны для проверки производительности оператора SQL? Эти инструменты встроены и специфичны для каждого типа сервера БД? Или есть общие инструменты?

Ответы [ 6 ]

9 голосов
/ 12 октября 2009

SQL Profiler (встроенный): Мониторинг с помощью SQL Profiler

SQL Benchmark Pro (Коммерческий)

SQL Server 2008 имеет новый Сборщик данных

В SQL Server 2005 (и более поздних версиях) отсутствуют индексы Dynamic Management View (DMV), которые могут быть весьма полезны (но только для планов запросов, находящихся в настоящее время в кэше планов): О функции отсутствующих индексов .

Существует также SQL Server Помощник по настройке ядра СУБД , который выполняет разумную работу (только не реализуйте все, что он предлагает!)

3 голосов
/ 12 октября 2009

Я в основном просто использую Profiler и просмотрщик плана выполнения

1 голос
/ 12 октября 2009

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

0 голосов
/ 12 октября 2009

Адам Мачаник имеет простой инструмент под названием SqlQueryStress , который может быть полезен. Он предназначен для «быстрого запуска теста производительности по одному запросу, для проверки идей или проверки изменений».

0 голосов
/ 12 октября 2009

В mysql (может быть и в других базах данных) вы можете EXPLAIN запросить, чтобы узнать, что об этом думает сервер баз данных. Это обычно используется для определения, какие индексы должны быть созданы. И это встроенный, так что вы можете использовать его без установки дополнительного программного обеспечения.

0 голосов
/ 12 октября 2009

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

На мой взгляд, опыт и эксперименты - лучшие инструменты для написания хороших SQL-запросов.

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