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

 

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

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

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 60 61 62 63 64 65 < 66 > 67 68 69 70 71 72 .. 161 >> Следующая


(wrapped line) Seek(...(...[Locations].[Location_Description]

(wrapped line) AS [LE]). SEEK:([LE].[Description]-'Dallas') ORDERED)

I

(wrapped line) Seek(.. (wrapped line) AS [E])

I

(wrapped line) AS [M])

--1ndex Seek (...(...[Employees].[Employee_PKey] SEEK:([M].[EmployeeJDME].[Manager_ID]) ORDERED) I--Index Seek(...(...[Locations].[Location_PKey]

(wrapped line) AS [LM]). SEEK:([LM].[Location_ID]-[M].rLocation_ID]) (wrapped line) ORDERED)

(11 row(s) affected)

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

¦ Можно использовать как можно меньше указаний для получения желаемого плана выполнения, или, по меньшей мере, плана, близкого к идеальному. Аргументы в пользу этого подхода звучат так, что у SQL Server есть больше информации, чем у вас, и следует оставить ему свободу действий, позволить ему адаптироваться к изменениям в распределении данных и пользоваться преимуществами улучшений в будущих версиях SQL Server. Оставив CBO максимум свободы, вы максимизируете его способности хорошо оптимизировать в будущем. Однако вы не можете знать, сколько указаний потребуется SQL Server, если он сразу же не сможет получить наилучший план, пока не попробуете разные варианты, поэтому этот подход обычно становится итерационным, с добавлением по одной подсказке за раз, пока SQL Server не создаст хороший план.

¦ Если вы не получили от SQL Server желаемый план автоматически, то предполагаете, что база данных сделала неверные предположения, которые распространяются на весь код и портят все ее вычисления. Следовательно, нужно оставить ей минимальную свободу действий, явно и полностью указывая, какой именно план вам нужен.

Если вы уверены в выбранном плане выполнения (а вы должны быть уверены, если применили все методы, которые я опишу далее в этой книге), то не имеет смысла полностью явно указывать план. Я пока что не сталкивался со случаем, когда хорошо выбранный надежный план выполнения требуется изменить, чтобы обработать данные с новым распределением или использовать новые возможности базы данных. С другой стороны, SQL, частично ограниченный набором подсказок, может выполняться неправильно, особенно если для некоторых таблиц или индексов статистика утеряна. Когда SQL Server делает неправильный выбор, то ошибка, которая заставила сделать его этот выбор, вероятнее всего портит весь план выполнения. Однако подсказка OPTION (FAST I) — это инструкция, которая может оказаться полезной, даже если у SQL Server уже есть прекрасная информация. Она всего лишь указывает, что время получения первой строки намного важнее времени получения последней строки.
130

4. Управление планами выполнения

Использование FORCEPLAN

Параметр FORCEPLAN иллюстрирует старый метод настройки в Microsoft SQL Server и Sybase. Он требует отдельного оператора SQL:

SET FORCEPLAN ON

Этот параметр действует на весь SQL-код, который выполняется в текущем соединении, пока вы не выполните оператор:

SET FORCEPLAN OFF

Когда значение параметра FORCEPLAN равно ON, база данных выполняет только простейшую оптимизацию SQL. Обычно она использует планы выполнения с вложенными циклами, которые работают при помощи индексов и соединяют таблицы в том же порядке, в каком они перечислены в разделе FROM. Если вы хотите получить план именно такого типа, то SET FORCEPLAN будет идеальным вариантом, поскольку не только включает нужный план, но и экономит время разбора, которое в противном случае было бы потрачено на выбор из большого диапазона планов, особенно для соединений множества таблиц. Это, образно говоря, «обоюдоту-пой» меч, поэтому применяйте его только когда знаете, что в разделе FROM указан правильный порядок соединения, и хотите использовать вложенные циклы.
Диаграммное изображение простых запросов SQL

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

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

Зачем нужен новый метод?

Поскольку я прошу вас быть терпеливыми, начну с рассмотрения того, зачем нам нужен этот новый инструмент. Почему бы не использовать то, что вы уже знаете, например информацию SQL-сервера, для решения проблем производительности? Самая большая проблема с использованием SQL-сервера для настройки — то, что он предлагает одновременно слишком много и недостаточно информации для решения задачи настройки. Информация SQL-сервера существует для функционального описания, какие столбцы и строки нужны приложению из каких таблиц, по каким условиям их нужно соединять, и в каком порядке возвращать. Однако большая часть этой информации совершенно не относится к настройке запроса. С другой стороны, информация, относящаяся и даже жизненно необходимая для настройки — о распределении данных в таблицах— полностью отсутствует. У SQL много общего со старыми проблемами эквивалентности, печально известными еще из математики начальной школы, разве что SQL-сервер с большей вероятностью пропускает необходимую информацию. Какую задачу, из двух приведенных ниже, вам будет легче решить?
Предыдущая << 1 .. 60 61 62 63 64 65 < 66 > 67 68 69 70 71 72 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100