PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Column Store-Pläne

Drüben bei pgsql-general fragt Bráulio Bhavamitra:

Das ist eine ziemlich interessante Frage. Das vollständige Ersetzen des aktuellen zeilenbasierten Speichers wäre keine gute Idee:Er hat uns sehr gute Dienste geleistet, und ich bin mir ziemlich sicher, dass ein vollständiger Ersatz durch einen spaltenbasierten Speicher für OLTP-Anwendungsfälle katastrophale Auswirkungen auf die Leistung hätte.

Einige Spalten. Bild mit freundlicher Genehmigung von Yiming Sun auf Flickr

Das bedeutet nicht, dass Säulenläden im Allgemeinen eine schlechte Idee sind – weil sie es nicht sind. Sie haben nur einen eingeschränkteren Anwendungsfall als „die gesamte Datenbank“. Für analytische Abfragen von Daten, die hauptsächlich angehängt werden, ist ein spaltenbasierter Speicher eine viel geeignetere Darstellung als der normale zeilenbasierte Speicher, aber nicht alle Datenbanken sind analytisch.

Um jedoch interessante Leistungssteigerungen zu erzielen, müssen Sie viel mehr tun, als nur den zugrunde liegenden Speicher zu ändern:Sie müssen sicherstellen, dass der Rest des Systems die geänderte Darstellung nutzen kann, damit Abfragen optimal ausgeführt werden können; Beispielsweise möchten Sie möglicherweise Aggregate, die in einem SIMD-Modus arbeiten und nicht nur einen Wert nach dem anderen, wie es heute der Fall ist. Dies ist an sich schon ein großes Unterfangen, und es gibt noch weitere Herausforderungen.

Wie sich herausstellt, arbeitet bei 2ndQuadrant ein Team genau an diesen Themen. Wir haben letztes Jahr einen Patch veröffentlicht, aber er war nicht sehr interessant – er hat die TPC-H-Werte nur um einen einstelligen Prozentsatz verbessert; nicht genug, um die Entwicklergemeinschaft damit zu belästigen (es war ein ziemlich invasiver Patch). Wir wollen mehr als das.

In unserem Design wird säulenförmig oder nicht eine Option sein:Sie können sagen:Sehr geehrter Server, für diesen Tisch richten Sie bitte eine säulenförmige Aufbewahrung für mich ein, würden Sie? Vielen Dank . Und dann erhalten Sie einen Tisch, der für den normalen Gebrauch vielleicht langsamer ist, aber für die Analyse rockt. Für die meisten Ihrer Tabellen ist der aktuelle zeilenbasierte Speicher wahrscheinlich immer noch die beste Option, da der zeilenbasierte Speicher viel besser für die allgemeineren Fälle geeignet ist.

Wir haben noch keinen Zeitplan. Bleiben Sie dran.