Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 temporary tablespace и compress таблицы  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
Коллеги, хотим у заказчика сжать таблицы и получили очень странное замечание. Они сказали, что при чтении со сжатых таблиц используется активно temporary tablespace - мол якобы они туда разжимаются изначала, а они боятся за его рост. Почитал про compression ещё раз и не понял как оно связано с temporary tablespace вообще. Как по-моему просто чуть больше нагрузки на cpu и нет никакого разархивирования таблиц в temp. Кто-нибудь может понять о чём это они говорят?
14 дек 15, 17:27    [18558744]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
Правильно ли я понимаю, что этим увижу temp использованный и если запущу это после select count из compressed table и увижу его использование, то Oracle использует temp для разархивации?

SELECT NVL(s.username, '(background)') AS username,
       s.sid,
       s.serial#,
       ROUND(ss.value/1024/1024, 2) AS temp_used_mb
FROM   v$session s
       JOIN v$sesstat ss ON s.sid = ss.sid
       JOIN v$statname sn ON ss.statistic# = sn.statistic#
WHERE  sn.name = 'temp space allocated (bytes)'
AND    ss.value > 0
ORDER BY 1;
14 дек 15, 18:19    [18558951]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
ora601
Member

Откуда:
Сообщений: 750
Shtock,

я думаю что они выдумывают, можно элементарно проверить на select * from compressed_table.
14 дек 15, 20:37    [18559474]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
... можно палец поломать
Guest
ora601
я думаю что они выдумывают
В думе думали, выдумывали, да не выдумали. Каждую фантазию проверять...
14 дек 15, 21:53    [18559735]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
Ну вот temp space allocated (bytes) показывает 0, но где гарантия, что это именно это. А в интернетах минимум 3 версии запросов на определение объема temp, использованного запросом.
15 дек 15, 00:47    [18560406]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Врут твои коллеги

Обычное сжатие таблиц -- это не компрессия в общепринятом смысле, а удаление избыточности значений внутри блока на уровне поля, т.е. если в блоке в 10 строках встречается поле со значением 'Текст', то само значение будет сохранено в блоке 1 раз, а вместо значений полей будет просто ссылочка. Значения 'Текст_1', 'Текст_2' и т.п. при таком подходе не сожмутся -- они разные, хоть и имеют одинаковую общую часть. Поэтому и рекомендуется для лучшего сжатия укладывать строки в отсортированом порядке

Есть еще Hybrid Columnar Compression -- эта штука поддерживается не всеми железками и использует другой формат хранения -- данные хранятся не по-строчно, а по-столбцам. При этом избыточность удаляется не на уровне блока, а на уровне Compression Unit, состоящий из нескольких блоков, содержащий несколько строк. Опять же, значения не сжимаются (в смысле не кодируются меньшим числом байт). Я тут не Копенгаген, но не думаю, что там для чего-то нужен TEMP

Есть сжатие для LOB-сегмента -- там используется настоящая компрессия (LZW), но это штука потоковая, поэтому временное пространство там вроде как тоже ни к чему

Сжатие индекса -- это отдельная песня. Там для удаления избыточности может браться не целиком поле, а префикс. Т.е. значения 'Текст_1', 'Текст_2' и т.п. вполне себе будут хранить один раз на блок префикс 'Текст', а в строка -- ссылочку на префикс и остаток значения. Опять же TEMP здесь не нужен.
15 дек 15, 03:54    [18560603]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Вячеслав Любомудров
Опять же, значения не сжимаются (в смысле не кодируются меньшим числом байт). Я тут не Копенгаген, но не думаю, что там для чего-то нужен TEMP
Здесь я, пожалуй таки наврал. Пишут, что оно для того и группируется по столбцам, чтоб обеспечить лучшую степень сжатия -- одинаковые типы и т.д.
15 дек 15, 04:24    [18560608]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Casper_ora
Guest
автор
Shtock,

Коллеги, хотим у заказчика сжать таблицы и получили очень странное замечание. Они сказали, что при чтении со сжатых таблиц используется активно temporary tablespace - мол якобы они туда разжимаются изначала, а они боятся за его рост. Почитал про compression ещё раз и не понял как оно связано с temporary tablespace вообще. Как по-моему просто чуть больше нагрузки на cpu и нет никакого разархивирования таблиц в temp. Кто-нибудь может понять о чём это они говорят?


Скорее всего твои коллеги говорят о том, что сжатую таблицу не перенести в другое табличное пространство, для этого придется ее разжимать, а если таблицы довольно объемные, то сжатие и разжатие занимает достаточное время и нагрузку.
15 дек 15, 06:10    [18560630]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
С какого перепуга?
15 дек 15, 06:20    [18560638]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Вячеслав Любомудров
Есть еще Hybrid Columnar Compression -- эта штука поддерживается не всеми железками и использует другой формат хранения -- данные хранятся не по-строчно, а по-столбцам. При этом избыточность удаляется не на уровне блока, а на уровне Compression Unit, состоящий из нескольких блоков, содержащий несколько строк. Опять же, значения не сжимаются (в смысле не кодируются меньшим числом байт).
Ну на самомо деле не так. По состоянию на 12.1:
Query Low - LZO (Lempel–Ziv–Oberhumer) compression algorithm.
Query High, Archive Low - ZLIB (gzip)
Archive High - Bzip2
15 дек 15, 08:01    [18560749]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Да, я поправился следущим постом
Но уверен, TEMP тут также не нужен
15 дек 15, 08:20    [18560777]     Ответить | Цитировать Сообщить модератору
 Re: temporary tablespace и compress таблицы  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
Ну вот у меня такое же мнение.
15 дек 15, 10:36    [18561262]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить