2012-12-06 3 views
6

Как название, я искал какое-то время и не смог найти ответ. В нем указывается только ключ и значение не может превышать 65535, когда оно находится на 8.4, но вообще не упоминается в документации 9.0.Каков предел размера для PostgreSQL 9.0+ hstore?

+0

Я предполагаю, что теперь это ограничено размером одного столбца (т. Е. 1 ГБ), но опять же это просто предположение. Возможно, вам удастся опубликовать этот вопрос в списке рассылки Postgres. –

ответ

14

hstore является varlena и ограничен максимальным размером TOAST ed fields, около 1GB.

Я не рекомендую никуда приблизиться к размеру. Производительность будет ужасной. Каждый раз, когда вы обновляете строку, включая строки с полями hstore, PostgreSQL должен написать новую копию строки. Излишне говорить, что с гигабайтными рядами это не будет весело.

Чтение производительности будет ОК, если вы читаете все ключи/значения, но плохо, если вы выборочно читаете только несколько клавиш/значений, так как hstore должен быть де-TOAST до доступа.

Трудно дать более конкретный совет, не зная вашего дизайна и использования; почему этого вопроса.

+0

Ну, я просто хочу знать предел, и спасибо за ваш ответ, это очень полезно. Так действительно, сериализация происходит, когда вы пишете поле? Похоже, что это не что-то очень блестящее, а сравнение с подлинным хранилищем NoSQL. –

+0

@goodwill 'hstore' полезен, но это не база данных в поле. Недавно я видел несколько вопросов о том, что люди думают о попытке сохранить целые быстро меняющиеся наборы данных в отдельных полях 'hstore'. Это ужасная идея. 'hstore' часто является хорошей альтернативой для хранения EAV-структурированных данных или использования JSON/XML и т. д., но это больше на уровне« документ », чем« база данных ». Даже EAV может быть лучше, если данные быстро меняются. –

Смежные вопросы