Viele Systeme weisen ein Muster der ständigen Akkumulation von Daten im Laufe der Zeit auf. Darüber hinaus ändern sich die meisten von ihnen nie wieder - das heißt, sie werden im Nur-Anhängen- Modus geschrieben .
Hierbei handelt es sich nicht nur um verschiedene Arten von Protokollen und Gerätemetriken, sondern auch um scheinbar nicht miteinander verbundene Dinge wie die Korrespondenz zwischen Benutzern oder Kommentare zu Nachrichten.
Vor ungefähr einem Jahr habe ich bereits über das Modell zur Organisation der Partitionierung solcher Daten und die dadurch verursachten kaskadierenden Änderungen in der Datenbankstruktur geschrieben. Und heute werden wir am Beispiel unseres Dienstes zur Analyse von PostgreSQL-Serverprotokollen die Funktionen der Wartung von Datenbanken analysieren, die auf diese Weise organisiert sind, und wie ein kompetenter Ansatz (und ein wenig Nachtarbeit) die Infrastrukturkosten erheblich senken kann .
Etwas, das wir stark laden ...
Die gesamte Basis unseres Service wird in tägliche Abschnitte "zersägt" und für maximalen Durchsatz neu organisiert. Weitere Informationen hierzu finden Sie in den Artikeln "Schreiben in PostgreSQL im Sublight: 1 Host, 1 Tag, 1 TB" und "Einen Cent bei großen Volumes in PostgreSQL sparen " .
(. " PostgreSQL"), "" - 100% , , :
" - , - !" ?
, 200MB/s:
... .
- ?.. , ! - !
? , ? 18 maintenance-? VACUUM, ANALYZE, CREATE INDEX ..
PostgreSQL, " PostgreSQL — , ".
" ! - "
-, autoVACUUM/autoANALYZE:
, autovacuum (to prevent wraparound) - - "" , ! , "" , 150GB… .
" , - , ."
, autoANALYZE?..
ANALYZE- append-only ! , PK.
, " " - autoanalyze. :
ALTER SYSTEM SET autovacuum_analyze_scale_factor = 1;
-- , (x2)
ALTER SYSTEM SET autovacuum_analyze_threshold = 100000;
-- ... 100K
"" . , - , .
:
INSERT ... ON CONFLICT UPDATE
- append-only ""
pg_repack
MVCC, "-". .
"" , , cron-, 00:15, " " pg_repack, "" :
pgrepack — Postgres Pro Standard, . CLUSTER
VACUUM FULL
, « », . pgrepack , ,CLUSTER
.
VACUUM FREEZE
(append-only) - VACUUM FREEZE
, "" :
VACUUM FREEZE rawdata_20190419; VACUUM FREEZE rawplan_20190419; ...
!
20 , (disk busy) ~60%: