2006 г.

Версия Oracle 10g: специалисты по настройке запросов больше не нужны

Владимир Пржиялковский,
Преподаватель технологий OracleOracle (Oracle Corporation)— американская корпорация, крупнейший в мире разработчик программного обеспечения для организаций, крупный поставщик серверного оборудования.,
www.ccas.ru/prz/
  Моя поэзияПоэзия (греч. , «творчество, сотворение») — особый способ организации речи; привнесение в речь дополнительной меры (измерения), не определенной потребностями обыденного языка; словесное художественное творчество, преимущественно стихотворное. Дополнительной мерой речи является стих (стихотворная строка), а также рифмы, метр и проч. Нередко слово поэзия употребляется в метафорическом смысле, означая изящество изложения или красоту изображаемого, и в этом смысле поэтичным может быть назван сугубо прозаический текст; во избежание путаницы в научной литературе существует поэтому тенденция избегать слова поэзия и говорить исключительно о стихе (стихах), однако и такое словоупотребление не свободно от недостатков, поскольку основное значение термина «стих» — отдельная стихотворная строка. здесь больше не нужна,
Да и, пожалуй, сам я тоже здесь не нужен.

С. ЕсенинСергей Александрович Есенин (3 октября 1895, село Константиново, Рязанская губерния— 28 декабря 1925, Ленинград)— русский поэт, представитель новокрестьянской поэзии и (в более позднем периоде творчества) имажинизма.. Русь советская.
  
  Печь затопит, все заготовит, закупит,
Яичко испечет да сам и облупит.
Попадья Балдой не нахвалится ...

А. С. Пушкин. Сказка о попе и о работнике его Балде.

Аннотация

В версии 10 Oracle появился специальный режим работы оптимизатора затрат (cost optimizer), позволяющий провести углубленный анализ запроса и предложить для последующего выполнения более качественный, чем обычно, план. В статье рассматривается пример программного выполнения углубленного анализа запросов с помощью нового в версии 10 пакета DBMS_SQLTUNE.

Введение

В версии 10 Oracle появился специальный режим работы оптимизатора затрат (cost optimizer), позволяющий провести углубленный анализ запроса и предложить для последующего выполнения более качественный, чем обычно, план. Применить такой анализ можно с помощью пакета DBMS_SQLTUNE, который позволяет получить от СУБД рекомендации по настройке конкретных запросов и даже получить сценарий внесения изменений. Рекомендации строятся на основе дополнительного, сверх обычного, изучения данных, проверочных прогонов частей плана и накопленных специалистами по настройке запросов знаний.

Пакетом можно пользоваться как вручную (программно), так и через графические средства OEM. Далее рассматривается пример программного выполнения углубленного анализа запросов.

Углубленный анализ запросов и его возможности

В обычной работе оптимизатор затрат строит план обработки "на скорую руку": опираясь на статистику используемых в запросе таблиц и индексов, значения некоторых параметров СУБД и, возможно, имеющиеся в запросе подсказки. В версии 10 можно попросить оптимизатор обработать запрос в специальном настроечном режиме (Automated Tuning Optimizer), при котором оптимизатор способен выполнить следующие виды анализАнализ (др.-греч. — разложение, расчленение)— операция мысленного или реального расчленения целого (вещи, свойства, процесса или отношения между предметами) на составные части, выполняемая в процессе познания или предметно-практической деятельности человека.а:
  • Анализ статистики запроса. Оптимизатор выяснит, имеется ли у объектов запроса статистика и насколько она устарела, и выдаст конкретные рекомендации по сбору статистики. На случай, если рекомендации будут проигнорированы, оптимизатор выработает корректировки к обычному плану.
  • Анализ способа доступа к данным. Оптимизатор выясняет, насколько целесообразно для выполнения запроса создать дополнительный индекс и предложит вариантВариант (фр.variante, от лат.varians, родительный падеж variantis — меняющий, изменяющийся) — одна из нескольких редакций какого-либо произведения (литературного, музыкального и т. п.) или официального документа; видоизменение какой-либо части произведения (разночтения отдельных слов, строк, строф, глав). создания индекса.
  • АнализАнализ (др.-греч. — разложение, расчленение)— операция мысленного или реального расчленения целого (вещи, свойства, процесса или отношения между предметами) на составные части, выполняемая в процессе познания или предметно-практической деятельности человека. структуры. Оптимизатор выяснит, возможно ли для ускорения ответа переформулировать запрос и предупредит о возможном при этом искажении семантики (в общем случае).
  • Анализ адекватности существующего плана. Оптимизатор сверится со статистикой предшествующих исполнений запроса и соберет дополнительную информацию, способную устранить собственные ошибки при обычной подготовке плана. Такая информация называется профилем запроса, она сохраняется в БД и может применяться в дальнейших обработках, корректируя автоматически основной план в лучшую сторону.

Углубленный анализ запроса требует времени, в том числе за счет проверочных прогонов частей плана для получения более точных оценок затрат. Анализ без построения профиля требует меньше времени и называется ограниченным (limited). Анализ с построением профиля требует больше времени и называется полным (comprehensive).

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

Настройка отдельных запросов

Рассмотрим пример настройки с помощью пакета DBMS_SQLTUNE конкретного запроса.

Откроем в SQL*Plus сеанс связи с СУБД от имени SCOTT и сделаем необходимые приготовления:

CONNECT scott/tiger

SET AUTOTRACE TRACEONLY EXPLAIN

SELECT ename, loc, sal, hiredate 
FROM emp, dept 
WHERE emp.deptno = dept.deptno
;
Ответ на запрос может выглядеть примерно так:
Execution Plan
----
Plan hash value: 615168685

---
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---
|   0 | SELECT STATEMENT   |      |    14 |   532 |     7  (15)| 00:00:01 |
|*  1 |  HASH JOIN         |      |    14 |   532 |     7  (15)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| DEPT |     4 |    84 |     3   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| EMP  |    14 |   238 |     3   (0)| 00:00:01 |
---

Predicate Information (identified by operation id):
------

   1 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")

Note
-----
   - dynamic sampling used for this statement

Переключимся на другой сеанс от имени SYS, например так:

HOST sqlplus / AS SYSDBA

Создадим задание на автоматическую настройку запроса со стороны пользователя SCOTT (на углубленный анализ):

DECLARE
my_task_name VARCHAR2 ( 30 );
my_sqltext   CLOB;

BEGIN
my_sqltext :=
   'SELECT ename, loc, sal, hiredate FROM emp, dept '
|| 'WHERE emp.deptno = dept.deptno'
;

my_task_name :=
DBMS_SQLTUNE.CREATE_TUNING_TASK (
  sql_text    => my_sqltext
, user_name   => 'SCOTT'
, task_name   => 'my_sql_tuning_task'
);
END;
/

Узнать состояние задания можно из словаря-справочника:

SELECT status, execution_start start_time, execution_end end_time 
FROM dba_advisor_log 
WHERE owner = 'SYS' AND task_name = 'my_sql_tuning_task'
;

Оно будет 'INITIAL'.

Запустим задание для настройки запроса:

EXECUTE -
 DBMS_SQLTUNE.EXECUTE_TUNING_TASK ( 'my_sql_tuning_task' );

Повторный запрос к DBA_ADVISOR_LOG даст STATUS = 'COMPLETED'. (Для серьезных запросов задание могло бы выполняться намного дольше).

Задание выполнило углубленный анализ с применением контрольных прогонов фрагментов плана и подготовило рекомендации. Запросим их:

SET LONG 10000
SET LONGCHUNKSIZE 1000
SET LINESIZE 200

SELECT
 DBMS_SQLTUNE.REPORT_TUNING_TASK ( 'my_sql_tuning_task' ) 
FROM dual;

Получим примерно такой развернутый результат.

Оптимизатор сделал два наблюдения: (а) отсутствует статистикаСтатистика— отрасль знаний, в которой излагаются общие вопросы сбора, измерения и анализа массовых статистических (количественных или качественных) данных. по одной из таблиц (и предложил готовую команду сбора статистики) и (б) можно получить более выгодный план, применив профиль (и указал для сравнения старыйГригорий Иванович Старый (настоящая фамилия — Борисов; 27ноября (9 декабря) 1880 — 11 октября 1937) — участник революционного движения в Молдавии и на Украине. Партийный и государственный деятель МАССР. план и план с применением профиля).

Ту же информацию можно извлечь из словаря-справочника, например:

SELECT type, message 
FROM dba_advisor_findings 
WHERE owner = 'SYS' AND task_name = 'my_sql_tuning_task'
;

Применим созданый профиль к запросу, правдаПравда— многозначное существительное. Входит в состав многих сложных терминов. чуть в иной форме, нежели чем рекомендует оптимизатор, но по сути так же:

BEGIN
DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
  task_name => 'my_sql_tuning_task'
, name      => 'my_sql_profile'
);
END;
/

Уточнить свойства (и наличие) созданного профиля запроса можно по словарю-справочнику так:

SELECT category, type, status 
FROM dba_sql_profiles 
WHERE name = 'my_sql_profile'
;

Вернемся в исходный сеанс, снова выдадим запрос и понаблюдаем план:

EXIT
/

Получим примерно такой результат:

Execution Plan
----
Plan hash value: 351108634

-----
|Id | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-----
| 0 | SELECT STATEMENT             |         |    14 |   364 |     4   (0)| 00:00:01 |
| 1 |  NESTED LOOPS                |         |    14 |   364 |     4   (0)| 00:00:01 |
| 2 |   TABLE ACCESS FULL          | EMP     |    14 |   238 |     3   (0)| 00:00:01 |
| 3 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |     9 |     1   (0)| 00:00:01 |
|*4 |    INDEX UNIQUEПотенциальный ключ — в реляционной модели данных — подмножество атрибутов отношения, удовлетворяющее требованиям уникальности и минимальности (несократимости). SCAN         | PK_DEPT |     1 |       |     0   (0)| 00:00:01 |
-----

Predicate Information (identified by operation id):
------

   4 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")

Note
-----
   - SQL profile "my_sql_profile" used for this statement

Заметим, что от текста запроса не требуется полного посимвольного совпадения. Выдадим:

selectSELECT ("селект") — оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию. ename, LOC,SAL, hiredate
from emp,   dept    WHERE emp.deptno = dept.deptno
;

Получим снова:

Execution Plan
----
Plan hash value: 351108634

-----
|Id | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-----
| 0 | SELECT STATEMENT             |         |    14 |   364 |     4   (0)| 00:00:01 |
| 1 |  NESTED LOOPS                |         |    14 |   364 |     4   (0)| 00:00:01 |
| 2 |   TABLE ACCESS FULL          | EMP     |    14 |   238 |     3   (0)| 00:00:01 |
| 3 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |     9 |     1   (0)| 00:00:01 |
|*4 |    INDEX UNIQUE SCAN         | PK_DEPT |     1 |       |     0   (0)| 00:00:01 |
-----

Predicate Information (identified by operation id):
------

   4 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")

Note
-----
   - SQL profile "my_sql_profile" used for this statement

Тем не менее опыт показывает, что несовпадение текстов ограничивается терпимостью к различиям в регистре букв и количествах пробелов. Например, следующий вид запроса не вызовет подключения профиля:

select ename, LOC,SAL, hiredate
from emp, scott.dept    WHERE emp.deptno = dept.deptno
;

Хотя профиль и приписан запросу, отдельный сеанс может отказаться от его использования. Профиль был создан для "категории" (поле CATEGORY.DBA_SQL_PROFILES) DEFAULT и будет применен только при условии, что запрос выдается с установленым в DEFAULT значением параметра СУБД SQLTUNE_CATEGORY. Это значение умолчательное. Заменим его на другое:

ALTER SESSION SET SQLTUNE_CATEGORY = test;

SELECTSELECT ("селект") — оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию. ename, loc, sal, hiredate 
FROM emp, dept 
WHERE emp.deptno = dept.deptno;

План для этого (и только !) сеанса снова станет прежним:

 
Execution Plan
----
Plan hash value: 615168685

---
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---
|   0 | SELECT STATEMENT   |      |    14 |   532 |     7  (15)| 00:00:01 |
|*  1 |  HASH JOIN         |      |    14 |   532 |     7  (15)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| DEPT |     4 |    84 |     3   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL| EMP  |    14 |   238 |     3   (0)| 00:00:01 |
---

Predicate Information (identified by operation id):
------

   1 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")

Note
-----
   - dynamic sampling used for this statement

Хотя профиль и имеется, но в этом запросе не учитывается.

См. следующую статью - "Автоматизация настройки запросов в версии Oracle 10g: некоторые дополнительные возможности".

Мы рекомендуем еще посмотреть:

Инженер технической поддержки клиентов
(телекоммуникационное оборудование)

Требования к кандидатам: мужчинаМужчина— человек мужского пола, одного из двух полов внутри рода людей (человек другого поланазывается женщиной). 21 - 30 лет.

    Обязательно:

  1. образование - высшее техническое (желательно в области телекоммуникаций или радиотехники)
  2. знание английского языка – на уровне чтения технической документации
  3. специалист должен обладатьОбладать(англ.Possession: A Romance)— такое название было дано в русском переводе произведению английской писательницы Антонии Сюзанны Байетт. Впервые роман был опубликован в Англии в 1990 году, в том же году стал лауреатом Букеровской премии, а американский еженедельный журнал Time включил «Обладать» в список ста лучших романов, написанных на английском языке с 1923 по 2005 год. хорошими знаниями в IT-сфере, ПО
  4. умение вести переговоры, грамотная речь
    Приветствуется:
  1. выпускники МГУ, МИФИ, МФТИ, МИРЭА, МИЭМ, МТУСИ, МЭИ, МВТУ
  2. наличие сертификатов
  3. опыт работы 3-4 года с оборудованием: Avaya, AlcatelAlcatel SA (произносится Алкатель)— ранее французская компания, один из лидеров мирового рынка телекоммуникационного оборудования. Штаб-квартира находилась в Париже., SiemensSiemens AG (нем.Siemens Aktiengesellschaft, произносится «Сименс»)— крупный международный концерн, работающий в области электротехники, электроники, энергетического оборудования, транспорта , медицинского оборудования и светотехники, а также специализированных услуг в различных областях промышленности, транспорта и связи. Штаб-квартиры в Берлине и Мюнхене (Германия)., NortelNortel Networks Corporation— канадский производитель телекоммуникационного оборудования. Штаб-квартира— в Торонто., Cisco, EricssonEricsson (Telefonaktiebolaget L. M. Ericsson) (по-русски произносится Эрикссон)— шведская компания, известный производитель телекоммуникационного оборудования. Штаб-квартира— в Стокгольме.
  4. опыт преподавания, выступления, чтения лекций
  5. умениеУмение— освоенный субъектом способ выполнения действия, обеспечиваемый совокупностью приобретенных знаний и навыков. У. формируется путем упражнений и создает возможность выполнения действия не только в привычных, но и в изменившихся условиях. работать с технической документацией, опыт проектирования и подготовки технических решений, знаниеЗнание— форма существования и систематизации результатов познавательной деятельности человека. Знание помогает людям рационально организовывать свою деятельность и решать различные проблемы, возникающие в её процессе. программного и аппаратного обеспечения телекоммуникационного оборудования
  6. опыт общения с клиентами (первыми лицами компаний).

ОбязанностиПравоотношение «Правоотношение представляет собой вид или форму, в которую облекается урегулированное правом общественное отношение».:

  • Установка, настройка и обслуживание телекоммуникационного оборудования
  • Техническая поддержка, консультации пользователей
  • Мониторинг состояния сети и координация устранения неисправностей
  • Проведение технических презентаций, предлагаемых решений потенциальным заказчикам
  • Сбор, анализАнализ (др.-греч. — разложение, расчленение)— операция мысленного или реального расчленения целого (вещи, свойства, процесса или отношения между предметами) на составные части, выполняемая в процессе познания или предметно-практической деятельности человека. и обработка статистической информации по работе с телекоммуникационным оборудованием
  • Формирование и согласование с заказчиком технических решений (технических предложений)

Условия труда: современный офис, дружный коллективКоллектив (от лат.collectivus— собирательный)— группа, совокупность людей, работающих в одной организации, на одном предприятии, объединенных совместной деятельностью в рамках какой-либо организации. По виду деятельности различают трудовые, учебные, военные, спортивные, художественной самодеятельности и другие коллективы. В более широком смысле— люди, объединенные общими идеями, интересами, потребностями., достойную з/п (оклад определяется индивидуально, по результатам собеседования), обучение в собственном учебном центре, возможностьВозможность — направление развития, присутствующее в каждом явлении жизни; выступает и в качестве предстоящего, и вполне объяснимо рациональным путем: в каждой возможности присутствует вероятная невозможность, «возможность невозможного». Возможность не определяется познанием того, что может быть. Познание вероятностей, возможностей не всегда влияет на нашу возможность. На изучении возможности основывается, главным образом, исследование бытия и события. развития и профессионального роста.

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

Внимание: Предлагаемый набор вопросов не является списком требуемых от кандидата качеств, навыков и умений. Часть вопросов лишь косвенно относится к сфере деятельности специалиста по данной позиции. Они не являются определяющими при отборе кандидатов, а лишь помогает нам предварительно оценить область Ваших знаний и потенциального "применения" у нас. Мы находимся в перманентном поиске различных специалистСпециалист— работник, выполнение обязанностей которого предусматривает наличие начального, среднего или высшего профессионального (специального) образования.ов, какие-то вакансии могут быть не представлены в данном списке. Пожалуйста, отвечайте на вопросы максимально откровенно, это поможет нам адекватнее отнестись к Вашей кандидатуре. Возможно«Возможно» (фр.Peut-tre)— фильм режиссёра Седрика Клапиша 1999 года., Вы заинтересуете нас в качестве кандидата на какую-нибудь другую работу.

Поля, помеченные знаком [*], обязательны к заполнению.

 АнкетаАнкета (фр.enqute «расследование; опрос»; ср.: англ.inquiry)— согласно изданному в 1910 году в Российской империи «Словарю иностранных слов, вошедших в состав русского языка» Александра Николаевича Чудинова есть «справка по вопросам социальным или экономическим, доставляемая по требованию правительства сведущими людьми». 
 Знание оборудования Cisco: 
 Знание оборудования Avaya: 
 Знание и понимание архитектуры  
телефонных сетей: 
 Знание и понимание архитектуры  
сетей передачи данных: 
 Количество телекоммуникационных устройств  
которые Вы обслуживали или настраивали: 
 Владение языком программирования C/C++: 
Персональные данные
 * Фамилия, Имя: 
 Город: 
 Возраст: 
 Образование: 
 E-mail: 
 Контактный телефон (с кодом): 
 Через сколько дней Вы готовы приступить  
к работе в офисе компании в Москве?: 
 Укажите желаемый и минимально  
возможный уровень оплаты Вашего труда: 
 Адрес персональной страницы в Интернете: 
 Дополнительные сведения: 
 Проверка зрения:
Поиск:
Авторизация
Логин
Пароль
Регистрация >
  Мероприятия « 2009 »   
« август » 
Пн  310172431
Вт  4111825 
Ср  5121926 
Чт  6132027 
Пт  7142128 
Сб 18152229 
Вс 29162330 
2009 IT и оборудование для бизнеса, S-NETWORKS. Информационные технологии и Информационное оборудование