PostgreSQL, есть ли смысл переноса большой колонки в отдельную таблицу?

Есть таблица с товарам в которой содержится около 50 миллионов записей, размер примерно 100Gb. Postgres при первом чтении строк с диска кеширует их в оперативной памяти для ускорения поиска.

CREATE TABLE product (
  id BIGINT PRIMARY KEY,
  ...
  description TEXT,
);


Есть ли смысл поле description вынести в отдельную таблицу, для того чтобы description не кешировался в память, тем самым высвободить память и ускорить работу с товарами?

Почитал про TOAST, но так и не понял, description загрузится в память если в SELECT указать только id.

SELECT id FROM product LIMIT 10;

Postgresql 9.5
  • Вопрос задан
  • 270 просмотров
Пригласить эксперта
Ответы на вопрос 1
@lega
Тип TEXT и так не хранится в таблице, хранится ссылка на него. (хотя малые размеры иногда хранятся прямо в таблице, зависит от реализации)
Постгрес не должен забивать этим память. А если вы отделите это во вторую колонку, то растратитесь на дополнительный индекс.
Это имеет смысл если у вас description повторяется для разных товаров, в итоге вы можете использовать один и тот же description (одну строку) для разных товаров.

ускорить работу с товарами?

Чтобы ускорить, нужно посмотреть какие у вас запросы и индексы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы