Ich verstehe nicht, wie Postgresql (9.2) die Spaltengröße (in kb) berechnen, ich habe diese Tabellen:
%Vor%Und ich bevölkere sie mit diesem Code, um 10000 Zeilen für jede Tabelle zu haben;
%Vor%Nun, was ich nicht verstehe ist, wie könnte das sein:
%Vor%Also haben die d_ * -Tabellen die gleiche Größe, auch wenn die Genauigkeit (und die Länge der gespeicherten Daten) sehr unterschiedlich ist;
Die Tabelle b1 ist kleiner als b2, auch wenn sie eine größere Genauigkeit hat.
Alle Tabellen wurden vor dem pg_total_relazion_size
gelöscht (vacuum, analize).
Ich konnte keine Antwort in Postgresql-Datentypen-Dokumentationen finden, also ich Ich werde es hier fragen: Wie wächst die Größe in kb in Bezug auf die Genauigkeit der numerischen Spalten?
Im Rahmen dieser Tests, um zu entscheiden, welche Genauigkeit / Skalierung für die Speicherung von monetären Typen in der Datenbank eines CMS verwendet werden soll, hätte ich nur einen Genauigkeits- / Skalierungswert für alle Artikelpreise (nicht für die Summen, wo die Skala muss 2 Dezimalstellen haben).
Je mehr Dezimalstellen ich speichern kann, desto besser ist es für den Benutzer (also habe ich keine Beschränkungen, wenn ein Kunde 12 Dezimalstellen für bestimmte Elemente speichern möchte), aber ich möchte verstehen, wie sich diese Entscheidung auf die Datenbankgröße und -leistung auswirkt .
Aus dem Handbuch :
Numerische Werte werden physikalisch ohne zusätzliche führende oder nachfolgende Daten gespeichert Nullen. Somit sind die deklarierte Genauigkeit und der Umfang einer Spalte maximal, nicht feste Zuweisungen. (In diesem Sinne ist der numerische Typ ähnlicher varchar (n) als char (n).) Die tatsächliche Speicheranforderung beträgt zwei Bytes für jede Gruppe von vier Dezimalstellen plus drei bis acht Bytes Overhead.
Das Ergebnis der Funktion pg_total_relation_size enthält Indizes. Die richtige Spaltengröße für jeden der Werte, die Sie einfügen, ist:
%Vor% Wenn Sie also dem Benutzer ein Maximum von n
Dezimalstellen geben wollen, definieren Sie es einfach als numeric(35, n)
. Es wird den Speicherplatz nur bis zur Anzahl der vorhandenen Dezimalstellen verwenden, da nachfolgende Nullen nicht gespeichert werden.
Tags und Links database postgresql database-design postgresql-9.2