PostgreSQL тип данных jsonb максимальный диапазон хранения - PullRequest
1 голос
/ 05 июня 2019

Я использую PostgreSQL версии 9.6.13. У меня 2 вопроса

  1. Каков максимальный диапазон хранения / размер типов данных 'jsonb' и 'text'
  2. Как найти максимальный диапазон хранения / размер для других полей?

Я посмотрел таблицу каталога 'pg_type', которую предоставляет PostgreSQL. Для обоих типов данных 'text' и 'jsonb' поле typlen = -1 это означает, что они имеют тип переменной длины, но нигде не могу найти максимальный размер хранилища для обоих.

1 Ответ

1 голос
/ 05 июня 2019

Существует более одного ограничения:

  1. Существует теоретический предел 1 ГБ, указанный в TOAST хранилище.

  2. Но практический предел значительно ниже - обработка занимает много памяти, и для длинных значений могут быть проблемы со свободной памятью.Также могут быть проблемы с производительностью - jsonb является неизменным атомарным значением - каждое обновление генерирует полное новое значение, каждое чтение должно считывать полное значение.Если ваши значения меньше 200 МБ, то обычно у вас нет проблем.

  3. Сервер базы данных не должен интенсивно использовать своп.Это означает, что реальный лимит зависит от количества активных запросов (активных пользователей).Более высокое значение max_connection означает более низкий практический предел для больших значений.

Типы с typlen == -1 являются varlena .Вы можете найти максимальный размер в документации .Но, опять же, это теоретический предел.Практические ограничения ниже и зависят от доступной памяти для Postgres и, вероятно, структуры (свойств) хранимых объектов.Вы должны проверить это.Других методов нет.

...