2010-07-12 5 views
1

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

Я использую SQL-Server 2005 Standard

Я бегу SQL Server Profile г много. Каждый раз, когда я нахожу ad hoc-запросы или sps, время исполнения которых превышает мои возможные пределы менее 100 мс для сложных запросов и выше 30 мс для коротких (число не означает ничего, просто чтобы иметь смысл). После того, как я нахожу проблематичные запросы, я их записываю, поэтому могу использовать Database Engine Tuning Advisor, который выполняет перегруженные запросы в таблицах, а в результате дает мне индексы, которые мне нужно построить для повышения производительности. Каждую ночь я выполняю функцию восстановления индекса из Планов обслуживания.

Теперь вопрос времени !!!

1.if Советник по настройке ядра базы данных дает мне 10 индексов для создания, в то время как процент улучшения составляет около 40%, если я использую его совет или нет? Лучше вопрос, каково отношение числа индексов/процент улучшения, которым я должен следовать. Индексы занимают пространство и время для восстановления.

2.Если я создаю около 5-7 индексов для каждого проблемного запроса, я могу получить 500 индексов на БД. Сколько индексов я могу построить, так что DB будет нормально работать? существуют ли какие-либо ограничения?

3.Есть ли какой-либо другой способ оптимизировать (или переконструировать) вашу БД, кроме использования моего метода или перехода sp на ваши руки и глаза?

ответ

1

Нет правильного ответа на этот вопрос, поскольку он сильно зависит от вашей рабочей нагрузки.

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

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

Чтобы идентифицировать самые бедные исполняемые запросы изолированно Если у вас установлено хотя бы клиентское средство SQL2005 SP1, вы можете щелкнуть правой кнопкой мыши узел базы данных в Management Studio и использовать меню «Отчеты -> Стандартные отчеты», чтобы увидеть планы в кеш с самым высоким CPU/IO.

Если вы заинтересованы в этой области, я рекомендую книгу SQL Server 2008 Query Performance Tuning Distilled (большинство из них, применимой к SQL2005, а)

+0

Reports, кажется, быть отключен, возможно, из-за восстановление модели набора для простого ... Спасибо за книгу, Мне нравится SQL больше всего из всех ролей, которые мне приходится покрывать на моем рабочем месте. – eugeneK

1

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

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

Это лучше, чем просмотр запросов по отдельности в изоляции, хотя это все еще имеет свое место.

Смежные вопросы