Archiv der Kategorie: Postgres

Postgresql: pg_top installieren

Um nachzuvollziehen, wo die Resourcen der Postgresql Datenbank verbraucht werden ist das Paket „pgtop“ sehr hilfreich.

Vorher die Repos abgleichen:

sudo apt-get update

Paket installieren:

sudo apt-get install pgtop

Zum Aufrufen des Programms (als User postgres):

pg_top

Als Ausgabe erhält man eine Darstellung wie folgt:
Weiterlesen

Shell: Swap auf Datenbankserver vermeiden

Datenbankserver ohne Swap zu betreiben KANN die Integrität der Daten gefährden. Aber ein Datenbankserver mit Swap WIRD erhebliche Performanceeinbußen bringen.

Wenn MariaDB (oder Postgresql) Swap belegt, ohne dass es einen erkennbaren Grund gibt (ausreichend Speicher vorhanden) kann die „Swappiness“ gesenkt werden. Dies ist immer noch sicherer als den Swap-Speicher komplett abzustellen (gerade bei einem Datenbankserver). Mit smem können gezielt die Swap-Verbraucher ermittelt werden.
Weiterlesen

SQL: Records von einer Tabelle in eine andere verschieben

Alle Datensätze der Postgresql-DB „log_messages“, die älter als ein Jahr sind, sollen in eine Archiv-Tabelle (gleiche Struktur, „log_messages_archive“) verschoben werden:

WITH moved_rows AS (
    DELETE FROM log_messages a
    WHERE log_time < now() - interval '366 days'
    RETURNING a.*
)
INSERT INTO log_messages_archive
SELECT * FROM moved_rows;

Postgresql: Neue Spalten mit Index einfügen und befüllen

Ausgangslage:
Eine Tabelle hat einen Index (id), der den Sektionsnamen (section) und den zugehörigen Key (idx) in etwas ungewöhnlicher Notation enthält:
section[idx]. Der Sinn sollte wohl sein, die Spalte „id“ direkt als Variablenname (hier für ein Array) zu übernehmen ($$row[id] = $value).
Abfragen nach einer Sektion (zB common) müssen dann aber mit LIKE durchgeführt werden (SELECT de FROM language WHERE id LIKE ‚common[%‘).
Das geht zu Lasten der Performance.

Auftrag:
Splitten der id in section und idx. Dazu neue Spalten anlegen und aus der id-Spalte die beiden neuen Spalten befüllen.
Das SQL soll bei konvertierten (2 neue Spalten, plus Indizes) genauso funktionieren, wie bei den nicht knonvertierten Spalten.
Weiterlesen