Ja, die Schlüssellänge ist wichtig
Je größer der Schlüssel, desto mehr Platz zum Aufbewahren. JSONB macht nichts Besonderes mit Schlüsseln.
Test Cast
Beispieldaten
# CREATE TABLE foo AS SELECT '{"f":true}'::jsonb FROM generate_series(1,1e6);
SELECT 1000000
# CREATE TABLE bar AS SELECT '{"very_long_key_not_premature_optimization_at_all":true}'::jsonb FROM generate_series(1,1e6);
SELECT 1000000
Tischgrößen
Schauen Sie sich jetzt die Tabellen an
# \dt+ foo;
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+----------+-------+-------------
public | foo | table | ecarroll | 42 MB |
(1 row)
test=# \dt+ bar;
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+----------+-------+-------------
public | bar | table | ecarroll | 89 MB |
(1 row)
Quellcode
Sie können es in der Quelle hier sehen
str = TextDatumGetCString(in_datums[i * 2 + 1]);
len = strlen(str);
v.type = jbvString;
v.val.string.len = len;
ZSON-Erweiterung
Sie können die ZSON-Erweiterung ausprobieren, die eine zeilenübergreifende JSONB-Wörterbuchkomprimierung bietet
ZSON ist eine PostgreSQL-Erweiterung für die transparente JSONB-Komprimierung. Die Komprimierung basiert auf einem gemeinsam genutzten Wörterbuch mit Zeichenfolgen, die in bestimmten JSONB-Dokumenten am häufigsten verwendet werden (nicht nur Schlüssel, sondern auch Werte, Array-Elemente usw.).
In einigen Fällen kann ZSON die Hälfte Ihres Speicherplatzes einsparen und Ihnen etwa 10% mehr TPS geben. Speicher wird ebenfalls gespeichert. Siehe docs / Benchmark.md. Alles hängt jedoch von Ihren Daten und Ihrer Arbeitslast ab. Glauben Sie keinen Benchmarks, überprüfen Sie alles auf Ihre Daten, Konfiguration, Hardware, Workload und PostgreSQL-Version.