3 Punkte von GN⁺ 2023-08-30 | 1 Kommentare | Auf WhatsApp teilen
  • Es wird eine Technik diskutiert, mit der sich Speicherplatz in einer Datenbank freigeben lässt, ohne Indizes oder Daten zu löschen.
  • Ungenutzte Indizes werden identifiziert und gelöscht, um Speicherplatz freizugeben.
  • Tabellen und Indizes werden neu aufgebaut, um unnötigen Speicherplatz zu bereinigen.
  • In PostgreSQL 13 wurde die Deduplizierung für B-Tree-Indizes eingeführt, wodurch sich die Größe von Indizes mit doppelten Werten reduzieren lässt.
  • Mit der Erweiterung pg_repack können Tabellen neu aufgebaut werden, um Bloat ohne Downtime zu verringern.
  • In PostgreSQL werden auch NULL-Werte indiziert und belegen dadurch unnötig Speicherplatz.
  • Partielle Indizes werden genutzt, um die Indexgröße zu reduzieren, indem NULL-Werte ausgeschlossen werden.
  • Es werden Abfragen und Befehle bereitgestellt, um diese Arbeiten auszuführen.
  • Die genannten Techniken können die Speichernutzung optimieren und die Datenbankleistung verbessern.
  • In einer großen, mit Django entwickelten Anwendung werden partielle Indizes verwendet, um den Speicherplatz zu optimieren und die Leistung zu verbessern.
  • Partielle Indizes können nicht nur NULL-Werte, sondern auch Werte ausschließen, die häufig oder überhaupt nicht abgefragt werden.
  • Durch die Umwandlung eines bestimmten Index in einen partiellen Index, der NULL-Werte ausschließt, lassen sich etwa 1,3 GB Speicherplatz einsparen.
  • Das Löschen von Indizes auf Replikaten kann zusätzlichen Speicherplatz freigeben.
  • Es werden Tipps gegeben, wie sich in Django die implizite Erstellung von Indizes für Fremdschlüssel verhindern lässt und wie bestehende vollständige Indizes ohne Downtime oder Leistungseinbußen in partielle Indizes migriert werden können.
  • Es wird betont, wie wichtig es ist, Indexdefinitionen zu optimieren, um Speichereffizienz und Leistung zu maximieren.

1 Kommentare

 
GN⁺ 2023-08-30
Hacker-News-Kommentar
  • Kleinere Indizes zu machen hat Vorteile, selbst wenn ausreichend Speicherplatz vorhanden ist.
  • Für Personen mit eigener Hardware ist es eine sinnvolle Option, mehr Speicherplatz bereitzustellen.
  • Die B-Tree-Deduplizierung in PostgreSQL 13 kann bei NULL-Werten in Fremdschlüsselindizes hilfreich sein.
  • Dieser Artikel bietet nützliche Techniken und Einblicke zur Optimierung der Platzeffizienz in PostgreSQL.
  • Für junge oder noch sehr frühe Unternehmen ist es im Allgemeinen besser, zusätzlichen Festplattenspeicher hinzuzufügen, statt die Größe zu optimieren.
  • Durch das Neuordnen der Tabellen-Spaltenreihenfolge und den Einsatz von Skripten lässt sich erheblicher Speicherplatz einsparen.
  • Eine asymmetrische Datenverteilung kann zu aufgeblähten Indizes führen und effizientere Vacuum-Vorgänge erforderlich machen.
  • Der Artikel erhielt auf Hacker News positives Feedback.
  • Zur Erkennung ungenutzter Indizes und von Optimierungsmöglichkeiten wird pganalyze.com empfohlen.
  • Ungewöhnliche PostgreSQL-Indexformate und Indizes für NULL-Werte sind nicht allgemein bekannt.
  • Eine größere Datenmenge kann erhebliche Auswirkungen auf Einfügezeiten und Performance haben.
  • Das Prinzip kann weiterhin gelten, selbst wenn eine Spalte einen hohen Anteil gemeinsamer Werte hat.