ОПТИМИЗАЦИЯ SQL
Чем дальше от начала разработки обнаруживается неэффективность приложения, тем дороже она обходится Время Стоимость ПроектированиеРазработка Эксплуатация
Оптимизаторы ORACLE Rule Based Optimizer (RBO) (Синтаксический оптимизатор) Cost Based Optimizer (CBO) (Оптимизатор по стоимости выполнения)
Команда ANALYZE и Cost Based Optimizer Сбор статистики об объектах, используемых оптимизатором, и сохранение ее в словаре базы данных Удаление статистики из словаря базы данных Проверка правильности структуры объектов Идентификация перенесенных и связанных строк в таблице или кластере
Где хранится собранная статистика ? USER_TABLES, ALL_TABLES, DBA_TABLES USER_TAB_COLUMNS, ALL_TAB_COLUMNS, DBA_TAB_COLUMNS USER_INDEXES, ALL_INDEXES, DBA_INDEXES USER_CLUSTERS, DBA_CLUSTERS
Команда ANALYZE ANALYZE CLUSTER TABLE INDEX CLUSTER NAME TABLE NAME INDEX NAME SCHEMA COMPUTE STATISTICS DELETE STATISTICS ESTIMATE STATISTICS VALIDATE STRUCTURE LIST CHAINED ROWS SAMPLE nROWS PERCENT
Команда EXPLAIN PLAN Объяснить план выполнения SQL - оператора EXPLAIN PLAN INTO имя таблицы SET STATEMENT_ID=текст FOR SQL-ОПЕРАТОР
Команда EXPLAIN PLAN Командный файл для создания PLAN_TABLE: $ORACLE_HOME/rdbmsXX/admin/utlxplan.sql
Команда EXPLAIN PLAN Интерпретация информации в PLAN_TABLE: SELECT LPAD(,2*(LEVEL-1))|| OPERATION|| ||OPTIONS, OBJECT_NAME FROM PLAN_TABLE START WITH ID = 0 AND STATEMENT_ID = текст CONNECT BY PRIOR ID = PARENT_ID;
Операции, производимые ORACLE (*) Эти операции являются методами доступа. (+) Эти операции являются операциями соединения (join).
Подсказки оптимизатору Oracle7 Server Tuning Часть No. A (Главы 7 - 9) Oracle8 Tuning Release 8.0 Часть No. A (Главы 7 - 9)
Подсказки оптимизатору Комментарий, начинающийся со знака + SELECT /*+ ALL_ROWS */ empno, ename, sal, job FROM emp WHERE empno = 7566;
Установка цели оптимизации ALL_ROWS FIRST_ROWS CHOOSE RULE
Установка метода доступа FULL ROWID CLUSTER HASH HASH_AJ INDEX INDEX_ASC INDEX_COMBINE INDEX_DESC INDEX_FFS MERGE_AJ AND_EQUAL USE_CONCAT
Установка порядка соединения ORDERED STAR USE_NL USE_MERGE USE_HASH DRIVING_SITE Подсказки для операций соединения
Параллельное выполнение PARALLEL NOPARALLEL APPEND NOAPPEND PARALLEL_INDEX NOPARALLEL_INDEX
Дополнительные подсказки CACHE NOCACHE MERGE NO_MERGE PUSH_JOIN_PRED NO_PUSH_JOIN_PRED PUSH_SUBQ STAR_TRANSFORMATION