PostgreSQL: Speicherplatz einer Tabelle

| Keine Kommentare | Keine TrackBacks

Damit ich es nicht wieder vergesse (und beim nächsten mal die Suchmaschinen mit den falschen Suchbegriffen füttere):

Um den physikalischen Speicherplatz einer Datenbank, Tabelle, Indexes usw. zu berechnen stellt PostgreSQL einige Funktionen bereit: System Administration Functions.

Um zum Beispiel ergibt der folgende Query den auf der Festplatte belegten Speicher für die Tabelle sessions, inklusive Indexe, TOAST-Daten usw:  

db=> SELECT pg_total_relation_size('sessions');
 pg_total_relation_size 
------------------------
              563707904
(1 row)

 

Ohne total kann man sich auch nur den Speicherplatz für die Daten ohne Indexe und TOAST-Daten anzeigen lassen, ein Beispiel verkneife ich mir nun aber.

Und mit pg_size_pretty kann man sich das ganze auch menschenlesbar formatieren lassen:

SELECT pg_size_pretty(pg_total_relation_size('sessions'));
 pg_size_pretty 
----------------
 538 MB
(1 row)

 

Auch der von einem Index belegte Speicherplatz lässt sich so herausfinden: 

db=> SELECT pg_size_pretty(pg_total_relation_size('sessions_pkey'));
 pg_size_pretty 
----------------
 72 MB
(1 row)

 

Alles in allem ganz schön viel für ein paar gammelige Sessiondaten: Es wurden einfach zu viele angelegt, zum Beispiel an Stellen, an denen nur eventuell vorhandene ausgelesen werden sollten.

 

Man kann sich aber auch ausgeben lassen, wieviel Speicher eine Spalte benötigt. Hier sieht man dann auch gut, welchen Effekt die Kompression von langen Texten bei Postgres hat:

odem=> SELECT uri, length(text), pg_column_size(text) FROM main_data;
                     uri                     | length | pg_column_size 
---------------------------------------------+--------+----------------
 /insert_coin/medien/boese.html              |  17964 |          10324
 /insert_coin/medien/schluesse.html          |  23644 |          13588
 /insert_coin/experiment/protokoll.html      |   8331 |           5070
 /insert_coin/experiment/manipulationen.html |  23079 |          12601
 /insert_coin/vorwort.html                   |   2841 |           2841
 /insert_coin/experiment/aenderung.html      |   6107 |           3620
 /insert_coin/medien/at-bombe.html           |  28267 |          15941
 /insert_coin/impressum.html                 |    590 |            594

 [...]
 

Weitere Funktionen sind in der Postrgres-Dokumentation aufgeführt, zum Beispiel zum Berechnen des Gesamtspeicherverbrauchs einer Datenbank.


(dank an #postgresql-de (IRC) und ads)

Keine TrackBacks

TrackBack-URL: http://www.perl-blog.de/mt/mt-tb.cgi/85

Jetzt kommentieren

Aktuelle Kommentare

  • Niels Dettenbach: ...schade eigentlich, das es PyPerl nicht mehr wirklich gibt. Zwar weiter lesen
  • Alvar Freude: Kannte ich noch nicht, danke für den Hinweis; allerdings ist weiter lesen
  • Ben Sieverts: Ich vermisse noch folgendes Buch auf der List: Effective Perl weiter lesen
  • Alex: Ich schlage einfach mal ganz unverschämt bei diesem Beitrag die weiter lesen
  • Marcel: Oke, danke für den Tipp. Schade natürlich. Wird euer Buch weiter lesen
  • Alvar: Nein, leider ist das noch nicht fertig. :-( Es gibt weiter lesen
  • Marcel : Hallo! gibt es dein Buch zu Perl6 schon? Wo kann weiter lesen
  • air max 2009: Nimm ein Paradigma deiner Wahl (z.b. MVC) und lerne Applikationscode weiter lesen
  • vTasker: Was ist das denn für ein MIST? Der Artikel ist weiter lesen
  • Virenschutz-Test: Das ist ja lustig hihi. Der Admin ist wohl nicht weiter lesen

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Alvar Freude vom 24.03.08 13:58.

DBD::Pg 2 mit Array-Unterstützung und asynchronen Queries ist der vorherige Eintrag in diesem Blog.

Wie Moduldokumentation nach HTML wandeln? ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.