Domanda

I miei obiettivi domanda Postgres, ma le risposte potrebbe essere solo abbastanza buono proveniente da qualsiasi sfondo di database.

Sono le mie ipotesi corretto:

  • I dischi hanno una dimensione di blocco fisso?
  • controller RAID può avere una dimensione di blocco differente? Fa un RAID blocco get diviso in più blocchi disco vero?
  • Il filesystem ha anche una dimensione di blocco indipendente che ottiene ancora una volta diviso sulla dimensione del blocco RAID?
  • Postgres funziona con fisse 8K blocchi. In che modo la mappatura per la dimensione del blocco del filesystem succedere qui? Sono Postgres 8K blocchi dosato insieme dal file system?

Quando si imposta un sistema è meglio avere tutti i blocchi a 8k? O fare le impostazioni non reale importa? Mi è stato inoltre chiedevo se alcune impostazioni delle dimensioni del blocco "sbagliate" potrebbero mettere a rischio l'integrità dei dati in caso di crash? Forse, se un blocco di Postgres 8k deve essere diviso su blocchi del disco multipli?

O fa nulla get batch insieme, e perciò lo spazio su disco sciolto con ogni mancata corrispondenza tra la dimensione dei blocchi definiti?

È stato utile?

Soluzione

settori del disco

Un disco ha una dimensione di settore fisso, normalmente 512 byte o 4096 byte su alcuni dischi moderni; questi dischi avranno anche una modalità in cui essi emulare settori da 512 byte. Il disco avrà tracce con numero di settori diversi; le tracce più vicino alla parte esterna del disco di avere più settori come hanno più spazio per una data densità di bit. Ciò consente un uso più efficiente dello spazio su disco; tipicamente una traccia avrà qualcosa come 1.000 settori da 512 byte su un disco moderno.

Alcune strutture formattazione può anche includere informazioni di errore correzione nei secotrs, che si manifesta nei dischi essendo basso livello formattato con 520 o 528 byte settori. In questo caso il settore ha ancora 512 byte di dati utente. Né di Windows né Linux supportano questa direttamente, anche se i5OS (IBM iSeries) e vari controllori SAN fanno.

Normalmente il settore / testina / brano viene tradotto in un indirizzo di blocco logico; a causa di problemi storici con compatibilità all'indietro la geometria (testine x settori x tracce) visti dal sistema operativo (specialmente sui dischi IDE e SATA) ha normalmente poco a che fare con la sua struttura fisica.

RAID stripe Size

Un controller RAID può avere una dimensione stripe per un array usando striping (ad esempio RAID-5 o RAID-10). Se l'array comprende (per exmaple) una striscia 128k, ogni disco ha 128k di dati contigui, e quindi il gruppo di dati successivo è sul disco successivo. Normalmente ci si può aspettare di ottenere circa una striscia per ogni giro del disco, quindi la dimensione stripe potrebbe influenzare le prestazioni su alcuni carichi di lavoro.

Partizione Allineamento

Una partizione del disco può o non può allineare esattamente con una striscia di RAID, e può causare una riduzione delle prestazioni a causa di spaccatura legge se non è allineato. Alcuni sistemi (ad esempio Windows 2008 server) saranno le partizioni configurare automaticamente per allinearsi con dimensioni di stripe volume del disco. Alcuni (server ad esempio Windows 2003) non lo farà, e si deve utilizzare un programma di utilità partizione che fa allineamento sostegno banda per assicurare che fanno.

File System Block Size

Il file system allocherà blocchi di stoccaggio in blocchi di una certa dimensione. Generalmente questo è configurabile - per esempio NTFS sosterrà unità di allocazione da (IIRC) 4K a 64K. Il disallineamento delle partizioni e blocchi del file system a strisce RAID può causare un blocco unico file system leggere per generare disco accessi multipli in cui sarebbe necessario uno solo se i blocchi del file system correttamente allineati con le strisce RAID.

Database Dimensione blocco

Il database allocherà spazio in una tabella o indice in un dato dimensione del blocco. Nel caso di SQL Server è 8K, e 8K è il default su molti sistemi. Su alcuni sistemi come Oracle, questo è configurabile, e PostgreSQL è un'opzione BTO tempo. In molti sistemi di assegnazione spazio per tavoli avviene normalmente in blocchi più grandi, con blocchi allocati all'interno di tali blocchi.

disallineamento di file system e allocazione blocchi dati può generare più I / O per un singolo blocco di scrittura, che permette di comandare una riduzione delle prestazioni.

I / O Chunking

Normalmente un DBMS effettivamente fare il suo I / O in blocchi di più di un blocco. Ad esempio, su SQL Server, tutti gli I / O è fatto in pezzi di 8 blocchi, 64K in totale). Su Oracle questo è configurabile. controllo casuale dei documenti di PostgreSQL non rivela una descrizione specifica se PostgreSQL fa questo, quindi non sono sicuro di come funziona su questa piattaforma.

Quando l'I / O fetta più grande della dimensione del blocco del file system o non è allineato con i confini RAID banda di scrittura su disco dal DB può causare più scritture su disco, che genera una riduzione delle prestazioni.

Spazio su disco utilizzo

Non lo spazio su disco è sprecato - database di I / O utilizzerà uno o più fisico di I / O sul disco per intero - ma incorrectly sintonizzato I / O può generare inefficienze che rallenterà il database. Le principali cose che devono essere in linea sono:

  • strisce RAID e le partizioni -. La partizione dovrebbe iniziare su un limite di striping RAID

  • Filesystem I / O di assegnazione e la banda incursione / confini della partizione -. Un RAID stripe must confine align con un'unità di allocazione file system, e dovrebbe essere un multiplo della dimensione unità di allocazione del file system

  • Disco dimensione di scrittura e di allocazione file system dimensioni dell'unità. Ci dovrebbe essere un 1:. Rapporto 1 tra le operazioni di I / O del database e filesystem operazioni di I / O

disallineamento non crea un problema maggiore integrità dei dati che altrimenti sarebbe presente. Il database e file system hanno meccanismi in atto per garantire opearations del file system sono atomiche. Generalmente un crash del disco si tradurrà in una perdita di dati, ma non problemi di integrità dei dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top