Upload
andrey-akulov
View
266
Download
9
Embed Size (px)
Citation preview
Oracle Database In-Memory -новая технология обработки в памяти
Игорь МельниковВедущий консультант
Oracle СНГ
2 Декабря, 2014 г.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
План
Введение
Использование Oracle Database In-Memory
In-Memory Advisor
Oracle Database In-Memory и Oracle TimesTen
Опыт использования
1
2
3
4
5
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
ВведениеУвеличение объемов памяти в системах
4
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Оперативная память: тенденции и влияниеСегодня память быстрее, дешевле и ее объем больше
Объемы памяти растут
2002 256 MB/DIMM
2012 16 GB/DIMM
Стоимость падает
2002 $0.2/MB
2012 $0.009/MB
Память значительно
быстрее
Disk5ms – скорость
доступа
DRAM100ns –скорость доступа
64x больше емкости 25x дешевле 50,000х быстрее
Ускорение OLTP и DW приложений, больше пользователей, больше данных
DRAM:
2012 $0.0005/MB2012 100 GB/DOM Flash
0.25ms –скорость доступа
400x больше емкости 400x дешевле 20x быстрееFlash:
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle In-Memory DatabaseЛучшие технологии для работы в памяти
12c Release 1
• Big Memory Cluster
& 2x more index compression on
Exadata
• Rowset Processing
• In-Memory Column Store for
Unstructured Data
• OLTP Wide Table Compression
• HCC Row Level Locking
Приложение
работает с
памятью без
изменений!
Приложение
работает с
памятью без
изменений!
Комбинация DRAM, Flash и HDD
Быстрой памяти и стоимости дисков
Без ограничений на размер БД
Комбинация DRAM, Flash и HDD
Быстрой памяти и стоимости дисков
Без ограничений на размер БД
2007 2012Pre-2007 20092008
• 20+ years of scale-up
optimizations
• 10+ years of scale-out
optimizations
• Prefix Index Compression
• Bitmap Index Compression
• Basic & IOT Table
Compression
• And much more
• In-Memory Parallel Query
• OLTP Compression
• Unstructured Data
Compression
• Client SQL/PL/SQL Result
Cache
• Server SQL/PL/SQL Result
Cache
• In-Memory Column Store for
DW
• Columnar Compression
• Columnar Processing
• Cache Fusion Optimizations
• In-Memory Parallel Query
Optimizations
• In-Memory Storage Index on
Exadata Storage
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Приходится выбирать один формат и идти на компромиссы
Противоречие которое длится десятилетияСтрочный формат и поколоночный
Row
� OLTP-операции работают быстрее со
строчным форматом
– Быстрая обработка нескольких строк, много колонок
Column
� Аналитика работает быстрее с
колоночным форматом
– Отчет о сумме продаж по штату– Быстрая обработка нескольких колонок, много строк
ORDER
SALES
SALES
S
T
A
T
E
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle Database In-MemoryНовая технология обработки в памяти
8
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle In-Memory Columnar Сache
DRAM
Pure Columnar
� Данные в представлении по
колонкам без генерации
redo-информации
� Минимальные затраты на
изменения – даже для OLTP-
транзакций
� Данные загружаются в кэш
при старте экземпляра БД
� Данные в представлении по
колонкам без генерации
redo-информации
� Минимальные затраты на
изменения – даже для OLTP-
транзакций
� Данные загружаются в кэш
при старте экземпляра БД
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle In-Memory: отдельный кэш в SGA
Instance
SGA
Redo logbuffer cache
Shared pool
Data Dict.cache
Library
cache
DBWRSMONPMON CKPTLGWR Others
Databasebuffer cache
SQL> ALTER SYSTEM SET inmemory_size=32G SCOPE=SPFILE;
Instance
SGA
Redo logbuffer cache
Shared pool
Data Dict.cache
Library
cache
DBWRSMONPMON CKPTLGWR Others
In-rowbuffer cache
In-Memory
Columnar
Cache
• Динамический параметр INMEMORY_SIZE
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
� И строчный и поколоночный
формат хранения в памяти для
одних и тех же данных/таблиц
� Данные одновременно активны и
транзакционно согласованы
� В 100 раз быстрее аналитика &
отчетность: поколоночный формат
� В 2 раза быстрее OLTP: строчный
формат
� И строчный и поколоночный
формат хранения в памяти для
одних и тех же данных/таблиц
� Данные одновременно активны и
транзакционно согласованы
� В 100 раз быстрее аналитика &
отчетность: поколоночный формат
� В 2 раза быстрее OLTP: строчный
формат
In-Memory Option: Оба формата в памяти СУБД
Column
Format
Memory
Row
Format
Memory
AnalyticsOLTPSales Sales
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Почему сканирование в In-Memory быстрее чем в буферном кэше?
SELECT COL4 FROM MYTABLE;
12
XXXXX
РЕЗУЛЬТАТ
Строчный формат
Буферный кэш
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
SELECT COL4 FROM MYTABLE;
13
RESULT
Колоночный формат
In-Memory кэш
РЕЗУЛЬТАТ
XXXX
Почему сканирование в In-Memory быстрее чем в буферном кэше?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Включение columnar-кэширования для таблицы или mview
• Включение columnar-кэширования для группы столбцов таблицы
• Кэшироваться может не вся таблица, а только часть столбцов!
SQL> ALTER TABLE cities
INMEMORY
INMEMORY (Id, Name, Country_Id, Time_Zone)
NO INMEMORY (Created, Modified, State);
Table altered.
SQL> ALTER MATERIALIZED VIEW cities_mv INMEMORY;
Materialized view altered.
•Служебные столбцы – не участвуют в отчетах: нужны только для бизнес-логики
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Изменение плана запросаSQL-оптимизатор перестраивает план запроса
SQL> SELECT count(*) FROM cities;
Execution Plan
----------------------------------------------------------
Plan hash value: 2756775702
---------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)|
---------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 0 (0)|
| 1 | SORT AGGREGATE | | 1 | |
| 2 | TABLE ACCESS INMEMORY FULL| CITIES | 1 | |
---------------------------------------------------------------------
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Сканирование миллиарда строк в секунду на процессорном ядре
SIMD
Compare all
values in 1
cycle
Сравнение всех
значений за один цикл
Загрузка значений
множества штатов V
ect
or
Re
gis
ter
In-Memory Column Store
State columnSales
Пример: Найти все продажи в штате CA
“CA”
более чем в 100 раз быстрее
• Каждое процессорное ядро
сканирует одну колонку
� При сканировании
используются быстрые
векторные SIMD-инструкции
� Миллиарды строк в секунду
сканируются одним ядром
• Каждое процессорное ядро
сканирует одну колонку
� При сканировании
используются быстрые
векторные SIMD-инструкции
� Миллиарды строк в секунду
сканируются одним ядром CPU
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Сканирование и объединение данных из нескольких таблиц
ПродажиМагазины
Type=outlet
Пример: Найти все продажи в outlet-магазинах
T
Y
P
E
Storeid
in
15,38,64
S
T
O
R
E
I
D
A
M
O
U
N
T
� Конвертирует join в
быстрые сканы колонок
� Joins выполняются в 10 раз
быстрее
� Конвертирует join в
быстрые сканы колонок
� Joins выполняются в 10 раз
быстрее
Sum
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Мгновенная генерация отчетов: доли секунд
In-Memory
Report Outline
Пример: Показать тенденции продаж обуви в outlet магазинах
Stores
Products
Sales
Sales
� Динамически создает в
памяти объект-отчет
� Объект заполняется во время
сканирования таблицы
продаж
� Отчеты строятся в 20 раз
быстрее без заранее
созданных кубов
� Динамически создает в
памяти объект-отчет
� Объект заполняется во время
сканирования таблицы
продаж
� Отчеты строятся в 20 раз
быстрее без заранее
созданных кубов
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Cжатие столбцов в columnar-кэше
Метод сжатия Описание
• NO MEMCOPRESS • Данные не сжимаются
• MEMCOMPRESS FOR DML • Метод сжатия оптимизированный для DML-операций
• MEMCOMPRESS FOR QUERY LOW • Метод по умолчанию.
• MEMCOMPRESS FOR QUERY HIGH
• MEMCOMPRESS FOR CAPACITY HIGH
• MEMCOMPRESS FOR CAPACITY LOW
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
OLTP работает медленно из-за аналитических индексов
Таблица
1 - 3
OLTP
индекса
10 - 15
аналитических
индексов� Большинство индексов в OLTP
(например, в ERP) базах строится
только для аналитических запросов
� Индексы хорошо подходят для
предсказуемых запросов (и в
памяти, и на диске)
� Вставка одной строки в таблицу
приводит к обновлению 10-15
аналитических индексов:
Медленно!
� Большинство индексов в OLTP
(например, в ERP) базах строится
только для аналитических запросов
� Индексы хорошо подходят для
предсказуемых запросов (и в
памяти, и на диске)
� Вставка одной строки в таблицу
приводит к обновлению 10-15
аналитических индексов:
Медленно!
Поколоночное
хранение в памяти
Поколоночное
хранение в памяти
Поколоночное
хранение в памяти
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle In-Memory – высокая доступность
� Представление по столбцам в
памяти не влияет на формат данных
на диске: datafiles, logging, backup,
recovery, и т.д.
� Все технологии, в том числе ASM,
RAC, DG, GG работают прозрачно
для In-Memory Option
� Защита от любых видов ошибок
� На уровне железа
� Логические ошибки
приложения (Flashback)
� Представление по столбцам в
памяти не влияет на формат данных
на диске: datafiles, logging, backup,
recovery, и т.д.
� Все технологии, в том числе ASM,
RAC, DG, GG работают прозрачно
для In-Memory Option
� Защита от любых видов ошибок
� На уровне железа
� Логические ошибки
приложения (Flashback)
RAC
ASM
RMAN
Data Guard & GoldenGate
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle In-Memory в RAC
• Управление распределением объектов в кэше между узлами RAC:
– AUTO DISTRIBUTE – синхронизацией кэша управляет СУБД (поведение по умолчанию)
– DUPLICATE – (exa-only) кэши принудительно синхронизируются между узлами RAC (2 копии chunk-а кластер)
– DUPLICATE ALL – (exa-only) кэши одинаковы на всех узлах RAC
– DISTRIBUTE BY ROWID RANGE, DISTRIBUTE BY
PARTITION, DISTRIBUTE BY SUBPARTITION
SQL> ALTER TABLE cites INMEMORY
DUPLICATE;
Table altered.
In Memory
Column Store
In Memory
Column
Store
In Memory
Column Store
In Memory
Column Store
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Полный синтаксис кэширования таблицыМощный и гибкий синтаксис
SQL> ALTER TABLE cities
INMEMORY
PRIORITY CRITICAL
DUPLICATE
INMEMORY MEMCOMPRESS FOR CAPACITY HIGH (Country_Id, Time_Zone)
INMEMORY MEMCOMPRESS NO (Id, Name, Name_Eng)
NO INMEMORY (Created, Modified, State);
Table altered.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
� Хранит минимальное
и максимальное
значение столбца в
каждом экстенте
памяти кэша
� Прозрачно исключает
ненужные
сканирования
столбцов, например:
WHERE prod_id > 14
AND prod_id < 29
Storage Index в In-Memory Columnar Store
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
� Space Manager
� Управляет памятью в In-Memory Column Store(create, extend, drop)
� Загружает данные в кэш
� Transaction Manager
� Обеспечивает согласованность данных в In-Memory Column Store с буферным кэшем
� Обеспечивает версионность
In-Memory Option - архитектура
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Для каких приложений подходит In-Memory Option?
• Если в приложении есть много запросов сканирующих много строк с фильтрами такими как: “=, <, >, и IN”
• Запрашивает всего лишь несколько столбцов, напр: 5 столбцов из 100 столбцов таблицы
• Приложение часто делает соединение большой факторной таблицы с таблицей измерений, с фильтром по таблице измерений
• Типы приложений предпочтительные для использования In-Memory Option: хранилища данных (DataWarehouse) и cмешанного типа (Mixed Application)
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle Database In-Memory и TimesTen
Application
Application
Application
TimesTen In-Memory Database
• Встраиваемая БД для приложений
• Экстремальная быстрая производительность
для OLTP-нагрузки (время ответа -
микросекунды)
• Адаптивный кэш для интегрированной системы
Oracle Exalytics
Oracle Database In-Memory Option
• Масштабируемая обработка данных в памяти
для любых видов нагрузки, в том числе и
смешанной (OLTP и DWH)
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
OEM Cloud Control 12c R4 - IMC Store Central
Public
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Oracle In-Memory AdvisorСоветчик настройки Oracle In-Memory
29
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 30
M6-32 – ЕКС Online для 7 терр. банков
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 31
Крупный российский заказчик – внутренняя финансовая система (в 162 раза!)
http://www.comdi.com/Oracle/OracleDay2014/
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Internal/Restricted/Highly Restricted 32
Крупный российский системный интегратор – (в 1157 раза!)
http://www.comdi.com/Oracle/OracleDay2014/
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. |
Заключение: Oracle Database In-Memory
• Экстремальная производительность для OLTP и хранилищ данных на актуальных данных
• Прозрачное масштабирование по CPU и RAM
• Прозрачно для всех технологий СУБД Oracle
Все преимущества обработки в памяти
без изменения кода приложений!
Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 34