Oracle | Компрессионные недостатки и преимущества - PullRequest
1 голос
/ 16 апреля 2020

У нас есть oracle 12 c база данных. Мы скоро перейдем на 19 c. Обычно мы следуем правилу для сжатия таблицы (расширенное сжатие OLTP) и сохраняем индексы несжатыми. Сейчас мы сталкиваемся с ситуацией, когда в зависимости от количества столбцов у нас есть несколько индексов с 800 ГБ, а соответствующая таблица имеет размер 200 ГБ (сжатый)

Может кто-нибудь помочь мне с пониманием ниже-

  1. Влияет ли сжатие таблиц на производительность запросов / загрузку таблиц
  2. Должны ли мы сжимать индекс? Повлияет ли это на производительность при загрузке или запросе?
  3. Если таблица секционирована, можем ли мы выборочно сжимать локальный раздел indexex по разделам.

Существуют ли передовые практики, а также рекомендации или донаты для * 1017? * сжатие?

1 Ответ

1 голос
/ 01 мая 2020

Re 1:

Сжатие таблиц может влиять на производительность, в основном положительное. Тем не менее, почти невозможно предсказать, так как это зависит от данных и порядка, в котором данные вставляются в таблицу, количества обновлений и т. Д. c.

Обычно я проверяю сначала потенциальная степень сжатия таблицы, либо с dbms_compression.get_compression_ratio, либо путем простого создания сжатой и несжатой копии таблицы (или подмножества строк, если они слишком большие).

Re 2: Сжатие индекса исключает ведущие значения в многоколоночных индексах, поэтому ответ такой же, как и для 1.

Re 3: Да. В соответствии с руководством по разбиению , вы можете использовать

CREATE INDEX i_cost1 ON costs_demo (prod_id) COMPRESS LOCAL (
    PARTITION costs_old, PARTITION costs_q1_2003, 
    PARTITION costs_q2_2003, PARTITION costs_recent NOCOMPRESS);
...