|
Программирование >> Полное сканирование таблицы
Полное сканирование таблицы Сначала я скептически отнесся к подходу Дэна. Но чем дальше я читал его книгу, тем яснее я начинал видеть логику, лежащую в основе его метода. Математика не лжет, а опыт - это хороший показатель. У Дэна более чем десятилетний опыт настройки, и я тоже добился высоких результатов, применяя метод, описанный в его книге. Любая попытка настройки SQL опирается на три типичных действия. Вам необходимо знать, как идентифицировать плохо выполняющийся SQL-запрос. Затем нужно увидеть, какой план выполнения используется для этого оператора. И, наконец, вам каким-то образом нужно придти к улучшенному плану. Я убежден, что метод Дэна представляет собой оптимальный способ выполнения столь важного последнего, третьего действия, которое позволяет эффективно проводить настройку SQL. Прочитайте эту книгу, примените его метод - и сэкономьте часы, которые потратили бы на гадание, что сделать дальше. Джонатан Генник (Jonathan Gennick), автор, редактор, администратор баз данных Oracle Посвящается Парве, Тайре и Эйбу за мечту о большем и за жизнь, оказавшуюся лучше мечты. Предисловие Более 10 лет назад я понял, что значительным фактором, влияющим на производительность бизнес-приложений, является скорость выполнения их SQL-запросов. Намного больше времени мне потребовалось, чтобы осознать, насколько широкие возможности улучшений обычно предоставляют SQL-серверы. SQL-код, значительно влияющий на загрузку системы и производительность конечных пользователей, обычно можно улучшить как минимум в два раза. Однако я нашел совсем немного советов по настройке SQL-запросов. И, похоже, эта проблема сохранилась и до сегодняшнего дня. Научные журналы описывают подробные методы, подходящие для автоматизированной оптимизации, но эти методы не адаптированы для ручной настройки. Документация для профессионалов, насколько я мог видеть, неполна. Поставщики баз данных и независимые авторы хорошо описывают, как можно исследовать путь, по которому извлекаются необходимые данные. Путь к данным обычно и называется планом выполнения. Вооружившись планом выполнения, вы можете понять, почему запрос выполняется за определенное время. С переменным успехом в документации рассказывается, что можно сделать для изменения плана выполнения, если вы подозреваете, что он не оптимальный. Но чего не хватает в литературе, так это подробного описания процесса осознания без бесконечных проб и ошибок, какой же план выполнения вы хотите получить. Так как для выполнения реальных запросов в бизнес-при.10жениях могут существовать миллиарды различных путей выполнения, настройка практически бесполезна и безнадежна, если у вас нет систематического метода выбора целевого плана. Эта проблема сродни ситуации, когда вы теряетесь в незнакомом городе, не имея карты. Глаза и ноги - это еще не все что нужно для того, чтобы найти требуемое место. Отсутствие информации о выборе наилучшего плана выполнения, как оказывается, характерно для всех поставщиков баз данных. Таким образом, у книги по настройке SQL, которая на 80 % не зависит от поставщика базы данных, появляется чудесный шанс - ведь в 80 % содержания книги вы не встретитесь с неинтересными подробностями просмотра и управления планами выполнения по методу, характерному для определенного поставщика. Я написал эту книгу, чтобы воспользоваться появившейся возможностью и познакомить вас с настройкой SQL, используя мощный, не зависящий от какого-то конкретно сервера баз данных подход. Аудитория этой книги 15 Цели этой книги я написал эту книгу, чтобы вооружить вас методами правильного решения любых проблем, касающихся настройки SQL. Обычно для решения настройки SQL применяется самое ограниченное, но тем не менее наиболее широко распространенное решение - какой-то набор изменений в структуре базы данных (например, можно добавить новые индексы) или, чаще, в самом SQL-коде. Подобные изменения позволяют медленному оператору SQL выполняться быстрее без изменения его функциональности и перестройки приложения, которое использует этот запрос. Это распространенное решение особенно привлекательно, так как оно является достаточно простым и у него редко появляются неожиданные побочные эффекты. Иногда при анализе проблемы настройки SQL вы обнаруживаете симптомы, которые указывают на небольшие функциональные ошибки, сопутствующие ошибкам производительности. Метод анализа настройки, описанный мной, упрощает идентификацию и описание этих мелких функциональных дефектов и помогает вам находить решения, которые исправляют скрытые функциональные ошибки в качестве побочного эффекта при анализе эффективности. Однако прежде всего эта книга посвящена именно настройке SQL-запросов. В редких случаях задачи настройки SQL нельзя решить за счет ускорения выполнения одного запроса. Запрос может возвращать слишком много строк, или выполняться слишком часто, чтобы достигнуть максимальной скорости, будь он даже абсолютно оптимизированным. Для таких редких проблем я описываю систематические решения на уровне приложения, изменяющие модель применения SQL-запроса, трансформируя ее к той конфигурации, для которой уже существует решение. Аудитория этой книги я написал эту книгу для тех, кто уже знает SQL и кому хотя бы иногда требуется найти способ заставить SQL выполняться быстрее. Обычно те же люди, которые впервые пишут SQL-код программы, то есть разработчики приложения, выполняют и большинство работы по настройке SQL. Конечно, я надеюсь, что эта книга поможет разработчикам решить их проблемы настройки, особенно наиболее часто встречающиеся типы проблем. Однако мой опыт специалиста по настройке говорит, что настраивать SQL, написанный другими людьми, можно не менее эффективно. К счастью, в SQL предусмотрено четкое описание, какие строки приложению требуются в конкретный момент, и вам не обязательно иметь какие-либо специфические знания о приложении, чтобы найти более быстрый способ получения нужных строк. Так как настройщику не требуется знание приложения, настраивать SQL, написанный другими людьми, очень легко, и у специалиста есть шанс научиться настраивать более эффективно, чем сможет не специалист, особенно при возникновении сложных и запутанных проблем.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |