2012-06-27 12 views
11

Ho bisogno del tuo aiuto per risolvere un problema poiché sono abbastanza nuovo per Postgres e la lettura dei manuali non mi è stata di aiuto.Postgres che distribuisce dati su più dischi

Abbiamo un server con 4 dischi rigidi interni. Abbiamo creato un database Postgres con poche tabelle. Vogliamo essere in grado di diffondere i nostri dati su questi 4 dischi.

Vogliamo specificare da qualche parte (es. Fase di creazione del tablespace) che i dati caricati in una serie di tabelle dovrebbero essere distribuiti tra i 4 dischi.

Potete gentilmente darci la sintassi o indicarci la direzione giusta?

+2

Davvero, perché non usare solo RAID? – leonbloy

risposta

20
  1. creare quattro spazi tabelle ognuno su un disco diverso (vedi: http://www.postgresql.org/docs/current/static/sql-createtablespace.html)
  2. spostare il contenuto delle tabelle negli spazi tabella in modo che i dati è distribuito come avete intenzione di essere utilizzato ALTER TABLE foobar SET tablespace = foospace, vedere qui: http://www.postgresql.org/docs/current/static/sql-altertable.html
  3. spostare il contenuto degli indici delle tabelle per le tabelle che utilizzano alter index idx_foo set tablespace = spacefoo, vedere qui: http://www.postgresql.org/docs/current/static/sql-alterindex.html
+0

quindi ho fatto questo per un tavolo (78 GB su disco). il nuovo percorso mostra ora 78G utilizzato, ma l'utilizzo del disco sulla partizione originale è rimasto invariato. come faccio a reclamare lo spazio originale? – keredson

+0

scopre un 'vuoto' ha fatto. passare l'aspirapolvere all'unico tavolo da solo non ha tuttavia, molto strano. – keredson

7

il modo migliore è quello di creare un array RAID-0 o RAID-10 e lasciare che il sistema operativo gestire questo per te. RAID-0 non ha ridondanza, quindi ogni singolo guasto all'unità è catastrofico. RAID-10 consente a qualsiasi disco di fallire e continua a lavorare con buone prestazioni. Evita RAID-5 o RAID-6 a causa delle scarse prestazioni di scrittura.

+0

Raid potrebbe essere una buona soluzione al problema ma non risponde alla domanda. Forse vuole avere dati specifici su un disco specifico, come mettere una tabella molto usata sul disco veloce e nient'altro, in modo che il disco venga usato solo da letture e scritture su questa tabella. – Janning

+2

Scusa ma ti sbagli. L'OP ha dichiarato: Vogliamo specificare da qualche parte (es. Fase di creazione dello spazio tabella) che i dati caricati in una serie di tabelle dovrebbero essere distribuiti tra i 4 dischi. Si noti che la clausola congiuntiva nella parentesi è presa come una sorta di ipotesi su come farlo. Anche se è possibile farlo con tablespace e non avere ridondanza, il 99% di tutti gli utenti è il modo migliore per mettere tutto su un grande array RAID, poiché tutte le tabelle possono beneficiare della velocità combinata più la ridondanza. Il picking Nit non aiuta molto. –

+0

Hai ragione, Scott. Ho votato per la tua risposta. – Janning

Problemi correlati