powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Есть ли методы сжатия данных в базе.
7 сообщений из 7, страница 1 из 1
Есть ли методы сжатия данных в базе.
    #35430378
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Решили использовать PostgreSQL 8.3 в качестве хранилища данных. Но столкнулись с проблемой дискового пространства. Одна стока текстовых полей это всреднем 7Kb данных (120 полей) умножив на 1.1 миллион записей получили не 7.7Gb а 47 Gb дискового пространства, которое занимает наша база на PostgreSQL. Дополнительных индексов кроме ключевых полей не делали.

Вопрос: Есть ли методы сжатия данных в базе? И нормально ли это?

Схема базы:
...
Рейтинг: 0 / 0
Есть ли методы сжатия данных в базе.
    #35431000
Author the new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadgerДобрый день.
Решили использовать PostgreSQL 8.3 в качестве хранилища данных. Но столкнулись с проблемой дискового пространства. Одна стока текстовых полей это всреднем 7Kb данных (120 полей) умножив на 1.1 миллион записей получили не 7.7Gb а 47 Gb дискового пространства, которое занимает наша база на PostgreSQL. Дополнительных индексов кроме ключевых полей не делали.

Вопрос: Есть ли методы сжатия данных в базе? И нормально ли это?


Читайте документацию:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
The TOAST code is triggered only when a row value to be stored in a table is wider than TOAST_TUPLE_THRESHOLD bytes (normally 2 kB). The TOAST code will compress and/or move field values out-of-line until the row value is shorter than TOAST_TUPLE_TARGET bytes (also normally 2 kB) or no more gains can be had. During an UPDATE operation, values of unchanged fields are normally preserved as-is; so an UPDATE of a row with out-of-line values incurs no TOAST costs if none of the out-of-line values change.

The TOAST code recognizes four different strategies for storing TOAST-able columns: 

PLAIN prevents either compression or out-of-line storage; furthermore it disables use of single-byte headers for varlena types. This is the only possible strategy for columns of non-TOAST-able data types. 

EXTENDED allows both compression and out-of-line storage. This is the default for most TOAST-able data types. Compression will be attempted first, then out-of-line storage if the row is still too big. 

EXTERNAL allows out-of-line storage but not compression. Use of EXTERNAL will make substring operations on wide text and bytea columns faster (at the penalty of increased storage space) because these operations are optimized to fetch only the required parts of the out-of-line value when it is not compressed. 

MAIN allows compression but not out-of-line storage. (Actually, out-of-line storage will still be performed for such columns, but only as a last resort when there is no other way to make the row small enough.) 
...
Рейтинг: 0 / 0
Есть ли методы сжатия данных в базе.
    #35431052
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadgerДобрый день.
Решили использовать PostgreSQL 8.3 в качестве хранилища данных. Но столкнулись с проблемой дискового пространства. Одна стока текстовых полей это всреднем 7Kb данных (120 полей) умножив на 1.1 миллион записей получили не 7.7Gb а 47 Gb дискового пространства, которое занимает наша база на PostgreSQL. Дополнительных индексов кроме ключевых полей не делали.

Вопрос: Есть ли методы сжатия данных в базе? И нормально ли это?


1. VACUUM FULL ANALYZE делали?
2. Может вы ширину записи подсчитываете как-то не так? Например, у вас не используется, случайно, CHAR заместо VARCHAR?
...
Рейтинг: 0 / 0
Есть ли методы сжатия данных в базе.
    #35431104
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Author the new oneЧитайте документацию:

Код: plaintext
1.
The TOAST code is trigger......
Это к нам не относится. У нас идет разбор по полям документа, одно поле одна запись в БД.
...
Рейтинг: 0 / 0
Есть ли методы сжатия данных в базе.
    #35431108
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin Pahan
Например, у вас не используется, случайно, CHAR заместо VARCHAR?
везде используется VARCHAR
...
Рейтинг: 0 / 0
Есть ли методы сжатия данных в базе.
    #35432521
ЯЕХХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ненормальная ситуация. Даже если добавить с оверхедом на строку и помножить на два никак не получается 47 гигов. Может вакуум фулл не делался, может висящая старая транзакция не дает вакууму работать. Может совсем другие таблицы место занимают. А что выдаст
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
  pg_relation_size(c.oid) as size,
  ns.nspname,
  (select relname from pg_class where reltoastrelid=c.oid) as parent,
  c.relname, c.relkind, c.relpages, c.reltuples
from pg_class c
  join pg_namespace ns on ns.oid=c.relnamespace
order by size desc
limit  20 
?
...
Рейтинг: 0 / 0
Есть ли методы сжатия данных в базе.
    #35432842
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЯЕХХНенормальная ситуация. Даже если добавить с оверхедом на строку и помножить на два никак не получается 47 гигов. Может вакуум фулл не делался, может висящая старая транзакция не дает вакууму работать. Может совсем другие таблицы место занимают. А что выдаст
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
  pg_relation_size(c.oid) as size,
  ns.nspname,
  (select relname from pg_class where reltoastrelid=c.oid) as parent,
  c.relname, c.relkind, c.relpages, c.reltuples
from pg_class c
  join pg_namespace ns on ns.oid=c.relnamespace
order by size desc
limit  20 
?Не дождался я Вашего поста, стер вчера базу, хотим по другому ее построить...
Как накачаем данными новую базу, выложу результат запроса и размеры на диске.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Есть ли методы сжатия данных в базе.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]