2012-12-06 13 views
6

Come titolo, ho cercato per un po 'e non sono riuscito a trovare una risposta. Dichiara solo la chiave e il valore non può essere più lungo di 65535 quando è su 8.4, ma non viene menzionato affatto sulla documentazione 9.0.Qual è il limite di dimensione per PostgreSQL 9.0+ hstore?

+0

La mia ipotesi è, che questo è ora limitato dalla dimensione di una singola colonna (vale a dire 1 GB) - ma ancora una volta è solo una supposizione. Potresti avere più fortuna nel pubblicare questa domanda sulla mailing list di Postgres. –

risposta

14

hstore è un varlena ed è limitato dalla dimensione massima dei campi TOAST, circa 1 GB.

Non è consigliabile che tu ti avvicini alle dimensioni. Le prestazioni saranno terribili. Ogni volta che aggiorni una riga, incluse le righe con i campi hstore, PostgreSQL deve scrivere una nuova copia della riga. Inutile dire che con file gigabyte non sarà divertente.

Le prestazioni di lettura saranno OK se stai leggendo tutte le chiavi/i valori, ma scadente se stai leggendo solo alcune chiavi/valori, dato che lo hstore deve essere de-TOAST prima dell'accesso.

È difficile dare consigli più specifici senza conoscere il design e la custodia; il perché di questa domanda.

+0

Beh, voglio solo sapere il limite, e grazie per la tua risposta, questo è abbastanza utile. Quindi in effetti una serializzazione si verifica quando scrivi il campo? Sembra che questo non sia qualcosa di molto brillante rispetto al vero storage NoSQL. –

+0

@goodwill 'hstore' è utile, ma non è un database-in-a-campo. Di recente ho visto alcune domande che suggeriscono che le persone stanno pensando di archiviare interi insiemi di dati che cambiano rapidamente in singoli campi 'hstore'. Questa è una pessima idea. 'hstore' è spesso una buona alternativa alla memorizzazione di dati strutturati EAV o all'utilizzo di JSON/XML, ecc., ma è più a livello di" documento "che di" database ". Anche l'EAV può essere migliore se i dati cambiano rapidamente. –

Problemi correlati