Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы экзамен_2003.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
854.53 Кб
Скачать
  1. Физические операции манипулирования данными.

  • Сортировка и агрегация

  • Операции доступа к диску

    • Сканирование таблицы (Table scan).

    • Сканирование нижнего уровня индекса (Index leaf scan).

    • Сканирование индекса (Matching index scan).

    • Хэширование (Hash acces).

  • Операции соединения Другие физические встроенные операции(выборка и проекция )

При выполнении плана запроса, SQL сервер использует физические операции (physical operation). Эти операции отличаются от логических операций, таких как утверждения SQL, определяющих реляционные операции, которые следует выполнить. Для каждой возможной логической операции существует по крайней мере одна и, возможно, много физических операций, которые позволяют СУБД выполнять операцию эффективным способом.

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

Фактор селективности

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

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

Численно фактор селективности представляет вероятность, которая изменяется от 0 до 1. Умножение числа строк в таблице на фактор селективности для связанного с ним предиката будет давать ожидаемое число строк для операции выборки, при предположении, что значения колонок таблицы равномерно распределены по строкам.

  1. Анализ запросов с целью повышения скорости их выполнения

общую процедуру настройки команды SELECT,результат выполнения которой не удовлетворяет требованиям производительности.

Шаг 1. Обновить статистику. До того как добавить индексы, необходимо убедиться, что статистика базы данных в системном каталоге является корректной.

Шаг 2. Упростить команду SELECT. Перед добавлением индексов или переписыванием плана выполнения следует попытаться упростить запрос.

Для того чтобы упростить SELECT, необходимо:

  • исключить ненужные предикаты и предложения;

  • расставить скобки в арифметических и логических выражениях;

  • преобразовать связанные переменные в константы

  • Шаг 3. Пересмотреть план запроса. Выполните запрос так, чтобы посмотреть его план. Вы должны хорошо понимать план запроса, чтобы использовать его. Несколько элементов этого плана требуют особого внимания.

  • Преобразование подзапроса в соединение.

  • Когда будут создаваться временные таблицы.

Шаг 4. Локализовать узкие места. Запрос, который выполняется медленно, может содержать много предложений и предикатов. Если это так, нужно определить, какие предложения или предикаты приводят к плохой производительности. Если удалить одно или два предложения или предиката, производительность выполнения запроса возрастает значительно.

Шаг 5. Создать индексы для одной колонки для критических параметров. Если завершены шаги 1-4 и запрос еще не удовлетворяет требованиям производительности, можно попытаться создать индексы специально для этого запроса, чтобы увеличить его производительность.

Шаг 6. Создать индексы для нескольких колонок.- Процедура идентификации колонок для создания составных индексов состоит в следующем;

  • Создать составной индекс. Если производительность не увеличилась, создайте другой индекс и повторите процесс.

  • Несколько колонок в предложении GROUP BY.

  • Несколько колонок в предложении ORDER BY.

  • Колонки соединения плюс низкая стоимость ограничений.

  • Колонки соединения плюс все ограничения.

Шаг 7. Удалить все индексы, которые не используются в плане запроса. Как уже указывалось выше, индексы замедляют выполнение команд DML, а их сопровождение требует времени и увеличивает стоимость обработки. Следовательно, вам следует проследить использование всех созданных индексов и удалить те, которые не используются запросом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]