sql >> Database >  >> RDS >> PostgreSQL

Column Store-plannen

Bij pgsql-general vraagt ​​Bráulio Bhavamitra:

Dit is een vrij interessante vraag. Het volledig vervangen van de huidige op rijen gebaseerde winkel zou geen goed idee zijn:het heeft ons zeer goed gediend en ik ben er vrij zeker van dat het volledig vervangen door een winkel in kolommen desastreus zou zijn voor OLTP-gebruiksscenario's.

Enkele kolommen. Foto met dank aan Yiming Sun op Flickr

Dat betekent niet dat zuilvormige winkels in het algemeen een slecht idee zijn - want dat zijn ze niet. Ze hebben gewoon een beperktere use case dan "de hele database". Voor analytische query's op append-voornamelijk gegevens, is een kolomarchief een veel geschiktere weergave dan het gewone op rijen gebaseerde archief, maar niet alle databases zijn analytisch.

Om interessante prestatiewinst te behalen, moet u echter veel meer doen dan alleen de onderliggende opslag wijzigen:u moet ervoor zorgen dat de rest van het systeem kan profiteren van de gewijzigde weergave, zodat het query's optimaal kan uitvoeren; u wilt bijvoorbeeld aggregaten die werken in een SIMD-modus in plaats van één waarde per keer zoals het nu is. Dit is op zich al een grote onderneming en er zijn ook andere uitdagingen.

Het blijkt dat er een team van 2ndQuadrant precies aan deze zaken werkt. We hebben vorig jaar een patch gepost, maar het was niet erg interessant - het zorgde slechts voor een procentuele verbetering van één cijfer in TPC-H-scores; niet genoeg om de ontwikkelingsgemeenschap mee lastig te vallen (het was een vrij invasieve patch). We willen meer dan dat.

In ons ontwerp zal zuilvormig of niet een optie zijn:u kunt zeggen Beste server, voor deze tafel zou u zo vriendelijk willen zijn om zuilvormige opslag voor mij in te stellen, zou u? Heel erg bedankt . En dan krijg je een tabel die misschien langzamer is voor normaal gebruik, maar die geweldig is voor analyses. Voor de meeste van uw tabellen is de huidige opslag op basis van rijen waarschijnlijk nog steeds de beste optie, omdat opslag op basis van rijen veel beter geschikt is voor de meer algemene gevallen.

We hebben nog geen tijdschema. Blijf op de hoogte.


  1. De verschillende beperkingen in SQL Server verkennen

  2. Android:deelnemen aan de kindertafel met oudertabel Sqlite

  3. Werken met MySQL TIMESTAMP-kolommen in SQL Server

  4. Advies met behulp van draaitabel in Oracle