среда, 9 ноября 2016 г.

Oracle 12: новые возможности для разработчика

9 ноября 2016 вышла документация по Oracle 12.2. В связи с этим опишу основные изменения в этой и предыдущих версиях Oracle 12.

Oracle 12.2: http://docs.oracle.com/database/122/index.html

1. история в sql+

2. Улучшение json support.

3. view DBA_STATEMENTS - описывает все sql запросы в pl/sql включая execute immediate

4. funct VALIDATE_CONVERSION - возможность конвертирования типа
Больше не нужно кастомная функция с перехватом всех exception.

5. Materialized Views: Real-Time Materialized Views -
query rewrite на неактуальной версии мат вьюхи + актуальном мат логе

6. Materialized Views: Statement-Level Refresh - ON STATEMENT
- обновление mat view при вызове вьюхе, а не при коммите на источнике

7. В listagg появилась функция обрезки (раньше валилось с ошибкой)
LISTAGG ( [ALL]  [,] [ON OVERFLOW TRUNCATE [truncate_literal] | ON OVERFLOW ERROR  [WITH | WITHOUT COUNT]])
WITHIN GROUP (ORDER BY )

8. можно делать партицированной таблицу в online без redefinition:
ALTER TABLE employees_convert MODIFY
  PARTITION BY RANGE (employee_id) INTERVAL (100)
  ( PARTITION P1 VALUES LESS THAN (100),
    PARTITION P2 VALUES LESS THAN (500)
   ) ONLINE
  UPDATE INDEXES

9. Можно теперь менять параметры таблицы и применять их в ONLINE без redefinition:
ALTER TABLE ... MOVE ... ONLINE

10. Можно делать модификации части партиции по условию:
ALTER TABLE orders_move_part
  MOVE PARTITION q1_2016 TABLESPACE open_orders COMPRESS ONLINE
  INCLUDING ROWS WHERE order_state = 'open';

10. Партицирование external table. Только для big data движков-источников

11. Поддержка constraint (fk/not null/uniq ...) для external table

12. дополнительная статистика по im-memory столбцам: число блоков в im-mem. Для external table - скорость mb/s чтения

13. новая разновидность MERGE JOIN для запросов без явного ключа соединения - "Band Joins"
http://docs.oracle.com/database/122/TGSQL/joins.htm#TGSQL94989

14. Гибридное сжатие данных при вставке без +append

15. Появилось сильное advanced index compression

16. Partitioning: Auto-List Partitioning - партицирование по distinct значению

17. DBA_MVREF_*_STATS - статистика по изменению matview: время, метод, размер и тд.

18. Process Management - предсоздание параллельных процессов. Параллельные запросы будут использовать уже готовые, а не создавать сами, что даст небольшое ускорение.

19. Partitioning: Read-Only Partitions - можно сделать readonly отдельную партицию

20. Возможность list партицирования по нескольким столбцам:
PARTITION BY LIST (state, channel)
(
  PARTITION q1_northwest_direct VALUES (('OR','D'), ('WA','D')),
  PARTITION q1_northwest_indirect VALUES (('OR','I'), ('WA','I')),
  PARTITION q1_ca_direct VALUES ('CA','D'),
  PARTITION rest VALUES (DEFAULT)
);

21. Scheduler: Resource Queues - установка лимита ресурсов или времени на job

22. ! Появилась вьюха V$INDEX_USAGE_INFO / DBA_INDEX_USAGE для мониторинга использования индексов

23. In-Memory Expressions - возможность сохранения/предрасчета? математических операций над in-mem столбцами
 * этоже используется в In-Memory Virtual Columns - материализация расчета в памяти

24. Automatic Data Optimization Support for In-Memory Column Store - расположение данных в памяти согласно частоты использования (heat map)

25. Join Groups - для столбцов соединения в in-mem можно указать их связь, тогда они будут иметь одинаковый тип сжатия, что позволит соединять столбцы не разжимая их.

26. Expression Tracking - in-mem оптимизатор более тщательно разбирает результат математической формулы или pl/sql команды до выполнения запроса, чтобы по результату сформировать верный план.

27. Oracle Multimedia PL/SQL API - появилось api для работы с видео/аудио/изображениями в blob

28. APPROX_COUNT_DISTINCT - приблизительные агрегатные функции для оценки

29. Exadata temp - запись temp в флэш память экзадаты, замен субд (что должно дать буст скорости чтения/записи в темп)


Другие изменения в Oracle 12 меньше 2 версии:
HYBRID HASH распределение в параллельных запросах: http://blog.skahin.ru/2016/01/oracle_29.html#skew
Advance index compress: http://blog.skahin.ru/2015/04/oracle.html
Zone map и attribute clustering: http://blog.skahin.ru/2016/01/oracle.html#clust
Expand sql: http://blog.skahin.ru/2016/01/oracle.html#sql2
Adaptive plan