Oracle mechanics

23.07.2014

12.1.0.2

Filed under: Oracle — Игорь Усольцев @ 10:56
Tags:

Похоже, вчера появилась доступная для скачивания для Linux / Solaris

А сегодня — обновили документацию версии 12.1 описаниями добавленной опции Using the In-Memory Column Store, из которой в частности следует, что заполнением/обновлением содежимого поколоночного хранилища в памяти будут заниматься background процессы, кол-во которых регулируется параметрами INMEMORY_MAX_POPULATE_SERVERS и INMEMORY_TRICKLE_REPOPULATE_SERVERS_PERCENT

Будет интересно

UPD. В частности, любопытное замечание можно видеть в спмске Features Not Available or Restricted in This Release of Oracle Database 12.1.0.2:

  • Oracle Automatic Storage Management Cluster File System (Oracle ACFS) does not currently support Hybrid Columnar Compression (HCC)

- значит ли это, что планируется поддержка HCC на ACFS ?

21.07.2014

JPPD в присутствии удалённой таблицы и View Merging

Filed under: CBO,heuristics,Oracle — Игорь Усольцев @ 00:50
Tags: ,

На продакшн системе версии 11.2.* наблюдал, как сам факт использования удалённой (remote) таблицы блокировал использование Join Predicate Push-Down (JPPD) в запросе следующего типа:

select t.char_column, analytic_view.max_id, analytic_view.max_char_column
  from t,
       t@SCOTT_LOOPBACK
         t2,
       (select id1,
               max(id2) keep(dense_rank first order by id1 desc) max_id,
               max(char_column) max_char_column
          from t
         group by id1) analytic_view
 where t.id1 = t2.id1
   and t.id2 = analytic_view.id1
   and t.id1 = 10

- несмотря на то, что удалённая таблица, казалось бы, никакими условиями запроса с inline view связана не была. Т.е. JPPD работает для локальной таблицы T2 и не работает для удалённой.
Использование аналитического запроса в inline view препятствием для применения JPPD не является

Тестовая схема для версий 11.2.0.3/12.1.0.1: (more…)

12.07.2014

Дочерние процессы LGWR 12c

Filed under: Диагностика системы (instance),Oracle,Oracle new features — Игорь Усольцев @ 12:32
Tags:

Лог процесса LGWR, начиная с версии 12c, указывает:

Created 2 redo writer workers (2 groups of 1 each)
...
Adaptive scalable LGWR disabling workers
...
Adaptive scalable LGWR enabling workers

- на вновь реализованную идею использовать множество процессов для записи логов, в последний раз наблюдавшуюся в версиях до 8i через ныне неиспользуемый (depricated) параметр _lgwr_io_slaves

В новой версии Oracle 12c это называется Adaptive scalable LGWR workers и грубо регулируется параметром скрытым _use_single_log_writer: (more…)

25.06.2014

Особенности преобразования Table Expansion

Filed under: bugs,Oracle,Partitioning — Игорь Усольцев @ 00:03
Tags: ,

Полезное стоимостное (CBQT) преобразование Table Expansion (TE), доступное с версии 11.2, кроме несомненных достоинств имеет ряд недоработок-багов особенностей реализации и применения, периодически омрачающих радость столкновений с лучшим из стоимостных оптимизаторов (CBO)

Далее — краткий обзор случаев неоднозначного поведения TE, доступных в версиях 11.2 — 12.1.0.1

И вначале — о хорошем: для случая простого Range Partitioning технология успешно отрабатывает независимо от количества и порядка расположения Unusable Index Partitions: (more…)

22.06.2014

x86 серверы для Database In-Memory Oracle 12c

Filed under: Hardware,Oracle — Игорь Усольцев @ 11:09
Tags:

Ожидаемое появление опции Database In-Memory потребует серверов со значительным объёмом памяти (DRAM), и Oracle не заставил себя ждать, анонсировав для сектора SMB условно доступное (x86) собственное решение — Sun Server X4-4 / X4-8 со следующими топовыми характеристиками:

  • 5U
  • 6 TB DRAM
  • 8 x Sun Flash Accelerator F80 PCIe Cards = 6.4 TB PCIe flash
  • 8 x Intel Xeon E7-8895 v2 (120 cores) с гибкой технологией Elastic Computing:

x4-8-graph[1]- позволяющей без перезагрузки системы менять количество/частоту доступных физических ядер
Цель «эластичности» при столь незначительном ~10% максимальном изменении частоты остающихся ядер в плане получения выигрыша производительности не очень понятна, в отличие от гибкости по кол-ву лицензий СУБД и опций при покупке системы с большой памятью, объём которой линейно зависит от кол-ва установленных процессоров — если такой вариант допустим, конечно. Неочевидным местом конфигурации мне также показалось соотношение макс.объёмов DRAM к PCIe Flash — 1:1

При беглом осмотре можно заметить, что прочие производители верхнего сегмента commodity hardware также совсем неплохо подготовились к приходу технологий In-Memory-DB
Например, новый сервер Huawei RH8100 V3: (more…)

20.06.2014

И ещё про Filter Push-Down

Filed under: Optimizer features,Oracle — Игорь Усольцев @ 00:04
Tags:

При попытке отключения всех типов трансформаций запроса (на примере из предыдущей записи): (more…)

14.06.2014

Filter Push-Down и избыточные предикаты

Filed under: Oracle,Partitioning — Игорь Усольцев @ 12:27
Tags: ,

Александр Шакура показал интересное: в простом запросе добавление очевидно избыточного условия (redundant predicate) включает partition pruning, заметно улучшая тем самым стоисмость (Cost) и скорость выполнения запроса к обзору, построенному на помесячно партиционированной таблице

SELECT
 *
  FROM (SELECT /* эта часть запроса станет view */
         TRUNC(a.DT, 'mm')                    BEG_MONTH,
         ADD_MONTHS(TRUNC(a.DT, 'mm'), 1) - 1 END_MONTH,
         SUM(a.SUM_RUR)                       SUM_RUR
          FROM MVIEW__DAILY_SALES a
          WHERE a.dt BETWEEN TRUNC (a.DT, 'mm') AND ADD_MONTHS (TRUNC (a.DT, 'mm'), 1) - 1 -- redundant predicate?
         GROUP BY TRUNC(a.DT, 'mm'), ADD_MONTHS(TRUNC(a.DT, 'mm'), 1) - 1)
 WHERE beg_month = DATE '2013-04-01'
   AND end_month = DATE '2013-04-30'

Без избыточного предиката запрос демонстрирует типичный PARTITION RANGE ALL как ожидаемое поведение: (more…)

07.06.2014

Dynamic Sampling для индексов с отсутствующей статистикой

Filed under: CBO,heuristics,Oracle,statistics — Игорь Усольцев @ 18:12
Tags:

План удаления 80+ млн.строк радовал простотой и доступностью:

11.2.0.3.@ SQL> explain plan for
  2  DELETE FROM SYSTEM.DB_AUDIT_TRAIL_STORE
  3  /

------------------------------------------------------------------------------------------------
| Id  | Operation        | Name                        | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------
|   0 | DELETE STATEMENT |                             |    83M|  2792M|    26   (0)| 00:00:01 |
|   1 |  DELETE          | DB_AUDIT_TRAIL_STORE        |       |       |            |          |
|   2 |   INDEX FULL SCAN| DB_AUDIT_TRAIL_STORE_ACTION |    83M|  2792M|    26   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------

Причиной генерации чудного плана с потенциально бесконечным временем выполнения послужило отсутствие статистики по индексу, на момент создания которого статистика по таблице была блокирована

Получение более реалистичного плана через сбор/установку реальной статистики индекса очевидно, однако, возникает вопрос: почему в таком случае не используются разного рода динамические технологии, типа Dynamic Sampling/Dynamic Statistics (DS), к примеру, и можно ли заставить их работать?

Итак, после создания тестовой таблицы на версии 11.2.0.3: (more…)

01.06.2014

CBQT при создании/обновлении матвью в 12.1.0.1

Filed under: heuristics,mview,Oracle,Oracle 12c — Игорь Усольцев @ 22:13
Tags: , ,

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

SQL> @fix 9852856
 
  BUGNO VALUE SQL_FEATURE          DESCRIPTION                 OPTIMIZER_FEATURE_ENABLE
------- ----- -------------------- --------------------------- ------------------------
9852856     1 QKSFM_CBO_3904125    Enable CBQT for MV refresh  12.1.0.1

, указанного Леонидом Борчуком при обсуждении неоднозначных результатов оптимизации запросов создания/полного обновления материализованных представлений в версиях Oracle 11.2

Это полезное улучшение могло было бы решить множество проблем, но радость была преждевременной (more…)

31.05.2014

«Подсказка» BEGIN_OUTLINE_DATA

Filed under: hints,Oracle — Игорь Усольцев @ 00:43
Tags:

- с виду безобидная конструкция, обрамляющая (вместе с END_OUTLINE_DATA) список подсказок плана выполнения при выводе в формате:

SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor(format => '+outline'));

Интересно, что при применении в виде отдельного хинта/комментария в запросе конструкция /*+ BEGIN_OUTLINE_DATA */ сама по себе оказывает осмысленное влияние на оптимизатор версий 11.2/12.1

Например, стандартный запрос для демонстрации «новой» (для Oracle 11g) операции HASH JOIN ANTI NA: (more…)

Следующая страница →

Тема: Rubric. Создайте бесплатный сайт или блог на WordPress.com.

Отслеживать

Get every new post delivered to your Inbox.

Join 109 other followers