Советы по настройке базы данных - PullRequest
1 голос
/ 12 июля 2010

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

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

Я запускаю Профиль SQL Server ra lot.Каждый раз, когда я нахожу специальные запросы или sps, время выполнения которых превышает мои возможные пределы менее 100 мс для сложных запросов и более 30 мс для коротких (число не имеет значения, просто чтобы иметь некоторый смысл).После нахождения возможных проблемных запросов я записываю их, чтобы я мог использовать Помощник по настройке ядра СУБД , который выполняет перегруженные запросы к таблицам и в результате дает мне индексы, которые мне нужно построить для повышения производительности.Каждую ночь я выполняю функцию перестроения индекса из планов обслуживания.

Теперь время вопроса !!!

1.if Советник по настройке ядра СУБД дает мне 10 индексов для создания, а процент улучшения составляет около 40%, еслиЯ использую это совет или нет?Лучший вопрос - каково соотношение количества индексов / процента улучшения, которому я должен следовать.Для восстановления индексов требуется пространство и время.

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

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

Ответы [ 2 ]

1 голос
/ 13 июля 2010

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

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

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

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

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

1 голос
/ 13 июля 2010

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

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

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

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