Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Тоу Д. -> "Настройка SQL. Для профессионалов" -> 5

Настройка SQL. Для профессионалов - Тоу Д.

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 2 3 4 < 5 > 6 7 8 9 10 11 .. 161 >> Следующая


Проблема с настройкой SQL, по крайней мере с моей точки зрения, заключается в том, что выявить плохо выполняющиеся SQL-запросы, требующие настройки, и определить план выполнения, использующийся в данный момент для этих плохо работающих операторов, достаточно просто. Ho затем всегда возникает задача куда сложнее. Как найти наилучший план выполнения, который заставит этот неприятный SQL-запрос выполняться быстрее? Давно прошло то время, когда я тупо смотрел на долго выполняющийся запрос, проверял его плохо работающий план выполнения и гадал, что же нужно сделать далее. Если уж на то пошло, позволительно задать себе кардинальный вопрос: а можно ли было вообще что-нибудь улучшить? Возможно, план выполнения, работающий так плохо с точки зрения пользователя, на самом деле был лучшим из возможных планов выполнения. Возможно, я просто терял время, стараясь угадать лучший план.

Здесь я использовал слово «угадать», и именно это действие лежало в основе всего того, что периодически делало настройку SQL-запросов бесполезным занятием. Все скатывалось к тому, что я просто смотрел на запрос и пробовал угадать лучший план. Конечно, я пытался использовать свой опыт, интуицию и знание данных, получаемых при помощи запроса, я вспоминал подсказки и трюки, о которых читал в книгах и журнальных статьях, но в конце концов я снова озарялся догадкой, пробовал новый план, опять о чем-то догадывался, пробовал следующий план и так далее. Я останавливался, только когда происходило одно из двух событий:

м мне везло, и я угадывал план выполнения, достаточно хороший по сравнению со старым планом, чтобы удовлетворить заказчика;

¦ у меня заканчивались идеи.

Я всегда беспокоился, когда идеи заканчивались, так как не мог с уверенностью сказать, был ли текущий план действительно оптимальным или я оказался слишком тупоголовым, чтобы интуитивно найти план выполнения, работающий лучше, чем текущий план. Честно говоря, я всегда относился к себе слишком самокри-
Вступление

13

тично, считая личную несостоятельность причиной любой неудачной попытки улучшить SQL-запрос.

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

Сначала я скептически отнесся к подходу Дэна. Ho чем дальше я читал его книгу, тем яснее я начинал видеть логику, лежащую в основе его метода. Математика не лжет, а опыт — это хороший показатель. У Дэна более чем десятилетний опыт настройки, и я тоже добился высоких результатов, применяя метод, описанный в его книге.

Любая попытка настройки SQL опирается на три типичных действия. Вам необходимо знать, как идентифицировать плохо выполняющийся SQL-запрос. Затем нужно увидеть, какой план выполнения используется для этого оператора. И, наконец, вам каким-то образом нужно придти к улучшенному плану. Я убежден, что метод Дэна представляет собой оптимальный способ выполнения столь важного последнего, третьего действия, которое позволяет эффективно проводить настройку SQL. Прочитайте эту книгу, примените его метод — и сэкономьте часы, которые потратили бы на гадание, что сделать дальше.

Джонатан Генник (Jonathan Gennick), автор, редактор, администратор баз данных Oracle
Посвящается Парве, Тайре и Эйбу за мечту о большем и за жизнь, оказавшуюся лучше мечты.

Предисловие

Более 10 лет назад я понял, что значительным фактором, влияющим на производительность бизнес-приложений, является скорость выполнения их SQL-запро-сов. Намного больше времени мне потребовалось, чтобы осознать, насколько широкие возможности улучшений обычно предоставляют SQL-серверы. SQL-код, значительно влияющий на загрузку системы и производительность конечных пользователей, обычно можно улучшить как минимум в два раза. Однако я нашел совсем немного советов по настройке SQL-запросов. И, похоже, эта проблема сохранилась и до сегодняшнего дня.

Научные журналы описывают подробные методы, подходящие для автоматизированной оптимизации, но эти методы не адаптированы для ручной настройки. Документация для профессионалов, насколько я мог видеть, неполна. Поставщики баз данных и независимые авторы хорошо описывают, как можно исследовать путь, по которому извлекаются необходимые данные. Путь к данным обычно и называется планом выполнения. Вооружившись планом выполнения, вы можете понять, почему запрос выполняется за определенное время. С переменным успехом в документации рассказывается, что можно сделать для изменения плана выполнения, если вы подозреваете, что он не оптимальный. Ho чего не хватает в литературе, так это подробного описания процесса осознания без бесконечных проб и ошибок, какой же план выполнения вы хотите получить. Так как для выполнения реальных запросов в бизнес-приложениях могут существовать миллиарды различных путей выполнения, настройка практически бесполезна и безнадежна, если у вас нет систематического метода выбора целевого плана. Эта проблема сродни ситуации, когда вы теряетесь в незнакомом городе, не имея карты. Глаза и ноги — это еще не все что нужно для того, чтобы найти требуемое место.
Предыдущая << 1 .. 2 3 4 < 5 > 6 7 8 9 10 11 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100