Ottimizzazione delle query Firebird
Оптимизация запросов Firebird охватывает то, как выполняются операторы SELECT: планы, статистика, методы доступа, шаблоны настройки и как выявлять медленные запросы с помощью MON$ и Trace API.
Программа курса
-
Производительность SELECT-запросов - как выполняется запрос
- Клиент-серверный подход
- Подготовка, генерация плана, выполнение, выборка, буферизация
-
Статистика выполнения
- Чтения, записи, выборки, время
- Кэш базы данных, диск, CPU
- Как мусор влияет на выполнение
- Попадания в кэш (Classic vs SuperServer)
-
Методы доступа / пути к данным
- NATURAL сканирование
- INDEX поиск: B-деревья, указатели на записи, направление, примеры
- Принудительное использование индекса, битовое слияние индексов
- Кардинальность таблицы и селективность индекса
- Отключение индексов в WHERE
- Индекс ORDER vs SORT (настройки
firebird.conf) - Отключение индексов в ORDER BY / GROUP BY
- Планы в хранимых процедурах и представлениях
-
Настройка запросов
- Как читать PLAN
- Настройки оптимизатора
WHERE FIELD IN (…)- LIKE, CONTAINING, STARTING WITH
- JOIN: неявный vs явный, плохие соединения, LEFT/RIGHT, самосоединения
- UPDATE + SELECT
- MAX, MIN, COUNT, AVG, SUM
- IN vs EXISTS vs MERGE
WHERE (X AND Y) OR (K AND N)
-
Отслеживание медленных запросов с помощью MON$ и Trace API
- Что такое MON$ и Trace
- Важные поля MON$
- Параметры и вывод Trace API
- Инструменты (включая мониторинг HQbird)