Вы находитесь на странице: 1из 27

Опция Advanced Compression

в СУБД Oracle
Обзор возможностей
Пудовченко Юрий Евгеньевич
Oracle СНГ
Ноябрь 2020

1 Copyright – © 2020 Oracle


Safe harbor statement

The following is intended to outline our general product direction. It is intended for information
purposes only, and may not be incorporated into any contract. It is not a commitment to deliver
any material, code, or functionality, and should not be relied upon in making purchasing
decisions.

The development, release, timing, and pricing of any features or functionality described for
Oracle’s products may change and remains at the sole discretion of Oracle Corporation.

2 Copyright – © 2020 Oracle


Cпособы ускорения SQL-запросов

- Индексирование, Zone Maps


- Агрегаты (mview),
- Секционирование (партиции)
- Сжатие (повышение плотности) данных
- Параллельное выполнение запросов

3 Copyright – © 2020 Oracle


Объемы данных растут
50
экспоненциально
• Объемы данных растут экспоненциально раз
в
• Длительные сроки хранения данных
• Частота процессора не растет


экспоненциально.
Экспоненциально растет время создания
10 лет
отчетов
• Потребности бизнеса ограничивают время
получения отчетов.
• Как бороться с ростом объемов? 2010 2011 2012
2013
• Как обеспечить стабильное время 2014
2015
2016
независимо от роста объемов данных ? 2017
2018
2019
2020

Source: IDC’s Digital Universe Study, Dec 2012


99,9% данных являются холодными
1 января
Месяцы
1 2 3 4 5 6 7 8 9 10 11 12
2
3
4
5
6
7
Горячие Теплые, ACO Холодные Оч. Холодные
8
9
10
11
12
13
Годы
14
Если вы купили дисков объемом 100Т ...
1) 100 TB = 100 000 000 000 000 байт /1024/1024/1024/1024 = 90,94 T
2) Зеркалирование – это /2 или /3 => 30-45 ТБ доступных пользователю
3) Запас дискового пространства на 3 года вперед? (20%/год = 1,73) => 17-33T
4) Вспоминаем про стендбай (делим 17-33 напополам) => 9-17 T
5) Primary + Standby + Test copy + Dev => 4-8 Т
6) Вспоминаем про Бэкапы (+3-5 копий + increm + arch) => 2-3 T / БД

• Из 100 «сырых» ТБ – примерно 2-3% идет под одну промышленную БД


• Коэффициент размножения данных 30-50 раз

• 2-3Т – это не объем данных, в этот объем входят накладные расходы: TS


system, sysaux, TEMP, UNDO, архивные журналы, flashback log, FRA

Не сжимая данные вы платите дисками


Сумма датафайлов 144
Погружаемся в БД Рабочая схема 98
Таблицы 46
select SEGMENT_TYPE, индексы 50
round(sum(BYTES)/power(2,30)) GB,
from DBA_SEGMENTS
LOB 1
--where owner not like ’%SYS%’…
group by rollup(segment_type) Объем строк в таблицах:
order by segment_type; select
round(
sum(NUM_ROWS * AVG_ROW_LEN)
/power(2,30)
Tab 1 Segment ) GB
from DBA_TABLES
Свободное -- where owner …
пространство
• свободное пространство в блоке
• cвободное в сегменте
• свободное пространство в файлах БД

Не сжимая данные вы платите дисками, электричеством, охлаждением, обслуживанием


Экономное хранения данных
В несколько раз сокращает объемы дискового пространства:

1 2-12 мес Год 1 Год 2 Год 3 Год 4 Год 5 Год 6 Год 7 Год 8 Год 9 Год 10
Год 11 Год 12 Год 13 Год 14

«Температура» данных Схема сжатия


Горячие данные Оставляем неизменными
(0-7 дней, 0,1% объема БД)
Не сильно горячие данные Advanced Compression для таблиц и индексов, Используем Parallel Query для
(3-90 дней, 2%) доступа к данным
Почти холодные данные Таблицы сжимаем HCC Query High, Удаляем индексы на исторических партициях
(60 дней – 3 года, 50%) (Partial Indexing), Используем Parallel Query для доступа к данным, Read-Only
Tablespace
Холодные данные Таблицы сжимаем HCC Archive High, Удаляем индексы на исторических партициях
(3 года - ∞) (Partial Indexing), Используем Parallel Query для доступа к данным, Read-Only
Tablespace
11
Возможности ACO
• Сжатие табличных данных: Advanced Row Compression, Advanced LOB
Compression, Advanced LOB Deduplication
• Сжатие индексов: Advanced Index Compression
• Температурные карты и автоматическая оптимизация данных: Heat Map
и Automatic Data Optimization
• История изменений каждой строки: Flashback Data Archive
• Сжатие файлов экспорта: Data Pump Export Data Compression
• Сжатие бэкапов: RMAN Backup Compression
• Сжатие трафика Data Guard: Redo Transport Compression
• Сжатие трафика SQL*Net: Advanced Network Compression

12
Advanced Row Compression
• Для активно изменяемых данных
и для неактивных данных
– Применимо в OLTP и Data Warehouse
– От 2x дo 4x раз

• Компромис между степенью сжатия и


производительностью
‒ Сжатие для всех типов DML операций и оперций массовой загрузки данных
‒ Данные остаются сжатыми в буферноме кеше
‒ Ускорение SQL запросов за счет уменьшения В/В

alter table … ROW STORE COMPRESS [BASIC|ADVANCED] | NOCOMPRESS


Advanced Index Compression
• Старый подход: index prefix compression

• Сжатие индексов 2.0: Advanced Index Compression


Выше коэффициент сжатия
Два способа: Low High

Compress Advanced High CREATE INDEX i ON tab(c1 …cn)


COMPRESS ADVANCED HIGH;

Compress Advanced Low


CREATE INDEX i ON tab(c1..cn)
COMPRESS ADVANCED LOW;

16
Advanced LOB Compression/Deduplication
• Сжатие и дедупликация возможны для SecureFiles LOBs
– Автоматически оценивается возможность сжатия (будет выигрыш или нет)
– LOBs уже сжатые внешними системами (JPEG) не сжимаются
– Полезно для Content Management, приложений электронной почты, …
– Существует Compression Advisor, который оценивает сжатие для SecureFiles LOBs
• Securefiles LOB оптимизированя для чтения и записи
• Выполняет дедупликацию повторяющихся данных
‒ Значительно уменьшает объем Significantly reduces space consumption
‒ Dramatically improves writes and copy operations

• Требуется ACO
DataPump Compression
• Сжимает таблицы в процессе выгрузки данных
– Сжимает данные перед записью на диск, уменьшает потребность в дисковом
пространстве при выгрузке
– Не требуется разжимать данные перед импортом

• Одновременное сжатие данных и метаданных


– Коэффициент сжатия 3-5 раз
• Требуется приобрести ACO

COMPRESSION=[ALL | DATA_ONLY | METADATA_ONLY | NONE]


COMPRESSION_ALGORITHM = {BASIC | LOW | MEDIUM | HIGH}
Backup Compression
• Сжимает бэкап в процессе выгрузки данных
– Сжимает данные перед записью на диск, уменьшает потребность в дисковом пространстве
при выгрузке
– Не требуется разжимать данные перез восстановлением
• В RMAN присутствует множество вариантов компрессии:
- RMAN Null Block Compression
- RMAN Unused Block Compression
- UNDO Block Compression/Optimization
- RMAN Precompression Block Processing.
- RMAN Binary Compression
• Three levels of RMAN Compression: BASIC, LOW, MEDIUM,
HIGH, ZLIB, BZIP2, ZSTD
Data Guard Redo Transport Compression
• Сжимает трафик между primary и standby
• Для сетей с низкой пропускной
способностью:
• Уменьшение времени на передачу журналов (Transport
Lag) между рабочей и резервной базами, уменьшая
таким образом объем возможных потерь
• Уменьшение загрузку сети, увеличение пропускной
способности сети
• Ускорение передачи журналов после временного
отсутствия сети (redo gap resolution)
• LOG_ARCHIVE_DEST_n.
• How to confirm if Redo Transport Compression is used In
Oracle Data Guard? (Doc ID 1927057.1)
• How to find out the compression rate of Redo Transport
Compression ? (Doc ID 1490751.1)
Advanced Network Compression
Сжимает трафик SQL*Net перед отправкой по сети
Уменьшение времени на передачу данных
Увеличение пропускной способности сети (Increased Effective
Network Throughput): бОльше объемы можно передать за меньшее
время
Уменьшение загруженности сети (Reduced Bandwidth Utilization) :
уменьшения объемов данных, проходящих по сети

SQLNET.COMPRESSION=on
SQLNET.COMPRESSION_LEVELS=(low|high)
Heat Map
ALTER SYSTEM SET HEAT_MAP = ON;
Следит за обращением к данным
• Отслеживается чтение и изменение
• На уровне строки и сегмента
– Время и тип доступа отслеживается на уровне
сегмента
– Время изменения для блоков БД
– Различает SQL-запросы от задач обслуживания:
сбор статистики, бэкап, redefinitions ...
• Не оказывает влияния на время доступа к
данным
– На уровне объекта
– На уровне блока << 5% cost
22
Automatic Data Optimization
Автоматизация многоуровневого хранения

ALTER TABLE … ILM ADD POLICY

• Автоматизация перемещения данных

• Политики типа
• Storage Tiering
• Compress

• Политики ADO не основанные на Heat Map

• dbms_ILM, dbms_ILM_ADMIN

23
Flashback Data Archive
История изменений каждой строки
create FLASHBACK ARCHIVE FLA1
• Cостояние данных на какой-то момент TABLESPACE tbs1
в далеком прошлом RETENTION 10 YEAR ;
alter table ... flashback archive FLA1
• Требования регулирующих органов -
Sarbanes-Oxley, HIPAA и Basel-II - select …
которые требуют ведения истории from … AS OF ‘2019-12-31 23:59:59‘
данных на протяжении длительных where …
сроков (обычно более 5 лет). select … from …
VERSIONS BETWEEN ‘2010-01-01 00:00:00’
and MAXVALUE

https://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/4421812.pdf
24
Tab 1 Segment
Исследуйте ваши объемы
Свободное
пространство
Объем файлов БД: select sum(bytes)/power(2,30)
from dba_data_files; => 144 T
Объем занимаемый сегментами:
select SEGMENT_TYPE,
round(sum(BYTES)/power(2,30)) GB,
from DBA_SEGMENTS
--where owner not like ’%SYS%’…
group by rollup(segment_type) Объем строк в таблицах:
order by segment_type;
SEGMENT_TYPE GB select
-------------------- --------- round(
LOBINDEX 0
LOB SUBPARTITION 0 sum(NUM_ROWS * AVG_ROW_LEN)
ROLLBACK 0 /power(2,30)
TYPE2 UNDO 0
LOB PARTITION 0 ) GB
LOBSEGMENT 1 from DBA_TABLES
INDEX SUBPARTITION 4
TABLE SUBPARTITION 7 -- where owner …
INDEX PARTITION 10 ;
TABLE 18
TABLE PARTITION 25 Выгрузить данные с помощью DataPump
INDEX 36
102 • Без сжатия
• С сжатием
Полезные инструменты
• Исследуйте ваши объемы:
• Segment Advisor = Space Advisor
• dbms_space.[create_table_cost | create_index_cost | unused_space]
• DataPump [no]Compression – данные в сухом остатке

• Избавимся от пустоты внутри сегментов:


• Пересоздать объект: Create … as select, Alter table move online (online move automatically
maintains the indexes), alter index rebuild online
• Deallocating Unused Space: Alter table … deallocate unused [keep X]
• Shrinking Database Segments Online: Alter table … shrink online
• Проанализируйсте возможность сжатия таблиц

Copyright © 2020 Oracle and/or its affiliates.


Compress Advisor

• dbms_compression.get_compression_ratio( Table, Part, TS)


Estimated Compression Ratio: 13.6
Blocks used by compressed sample: 1041
Blocks used by uncompressed sample: 14251

• DB version 11.2.0.2 + or set Patch 8896202: ENABLE COMPRESSION


ADVISOR TO ESTIMATE EXADATA HCC COMPRESSION RATIOS
• Табличное пространство должно быть
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
• В таблице/партиции не менее 1 млн строк
Подводим итоги
ВОЗМОЖНОСТЬ Когда применять
Basic Table Compression Таблицы только для чтения в среде Data Warehouse,
неактивные партиции в OLTP
Активно опрашиваемые партиции в OLTP и Data
Advanced Compression

Advanced Row Compression


Warehouse
Advanced LOB Compression and Неструктурированные данны в OLTP и Data Warehouse
Deduplication
Advanced Index Compression Подходит для всевозможных индексов

Advanced Network Compression and Медленная сеть с небольшой пропускной


способностью
Data Guard Redo Transport
Compression
RMAN/Data Pump Backup Compression Сжатие бэкапов

Automatic Data Optimization/Heat Map Автоматизированный подход к сжатию и к storage


tiering
Storage

Таблицы, к которым редко выполняется DML


Oracle

Hybrid Columnar Compression –


Warehouse Level
Hybrid Columnar Compression – Максимально возможная степень сжатия таблиц
Archive Level
28
Польза Advanced Compression
• Незаметно для приложений
• Увеличение производительности транзакционных и
аналитических систем
Ускорение запросов, повышение плотности данных, уменьшение
времени резервного копирования и восстановления
• Автоматизация хранения
Температурные карты, Технологии автоматизации для многярусных
СХД
• Уменьшение потребностей в СХД
• Уменьшение скорости роста БД

29
Best Practices and More….

Что
https://www.oracle.com/a/tech/docs/adva
nced-compression-poc-insights.pdf

почитать

https://twitter.com/aco_gregg https://www.oracle.com/ocom/groups/pu
blic/@otn/documents/webcontent/510415
https://blogs.oracle.com/DBStorage/ 3.pdf

https://www.oracle.com/database/technologies/
advanced-compression.html

30
Полезные ноты….
Advanced Compression Master Note (Doc ID 1223705.1)
How to compress a table that is online (Doc ID 1353967.1)
Advanced Compression critical patches (Doc ID 1061366.1)
Redo Transport compression with Data Guard (Doc ID 729551.1)
How to see if rows are compressed in a table (Doc ID 1477918.1)
A complete understanding of RMAN compression (Doc ID 563427.1)
How to determine if Advanced Compression is used by DataPump (Doc ID 1993134.1)
Index Organized Tables (IOTs) and compression (Doc ID 1555637.1)
How to find the optimal Index Key COMPRESS level for Indexes (Doc ID 601690.1)

31
Благодарю за
внимание !

Пудовченко Юрий Евгеньевич


Oracle CIS

32 Copyright – © 2020 Oracle

Вам также может понравиться