Immissione del log delle transazioni su volume separato [stato solido]?


12

I registri delle transazioni sono spesso isolati su un volume separato. La logica di questa pratica, a quanto ho capito, è che i dati del registro delle transazioni sono scritti in sequenza - e i dischi rigidi possono eseguire operazioni di scrittura con una velocità molto maggiore sequenzialmente rispetto a casualmente. Ciò è dovuto al piccolo ago all'interno dell'unità che deve spostarsi di una distanza molto più breve durante la scrittura di blocchi sequenziali di dati, al contrario di scritture casuali.

(Ci scusiamo per l'interpretazione ingenua. Sto solo cercando di dare un senso a ciò che ho letto.)

Con questo in mente ... Mi viene in mente che le unità a stato solido non hanno piccoli aghi, piatti e cose che si muovono all'interno di esse. Se il mio database e il registro delle transazioni si trovano entrambi su un singolo RAID 5 di otto unità a stato solido, c'è davvero qualche vantaggio nello spostare il registro delle transazioni nel suo volume separato? Se il presunto aumento di efficienza si basa sulla premessa di scritture sequenziali che riducono la distanza che si muovono gli aghi e ruotano i piatti, e un'unità a stato solido non ha nessuna di queste parti mobili, cosa ottengo isolando il registro?


Hai ancora autobus e buffer da considerare. Li terrei separati a causa delle differenze del pattern I / O. Se le tue app non sono molto transazionali, probabilmente non conoscerai la differenza, se il costo è un problema.
Eric Higgins,

Quando usi il termine "bus" ... ti riferisci al percorso che i dati prendono dalla scheda madre alla scheda RAID?
Chad Decker,

2
"c'è davvero qualche vantaggio nello spostare il registro delle transazioni nel suo volume separato?" quasi certamente no, ma c'è davvero un vantaggio in termini di velocità nel spostare l'intero array su RAID10 e l'affidabilità in eccesso al provisioning eccessivo (ovvero sotto-partizionamento) degli SSD
Jack dice che prova topanswers.xyz il

Risposte:


10

Risposta breve, utilizzare un singolo array, è improbabile che si verifichino miglioramenti delle prestazioni dalla separazione dei registri dai dati su 8 unità SSD. Vedi SQL su SSD: Hot and Crazy Love per un commento più dettagliato (e divertente) sugli SSD. Prestare particolare attenzione alle note sugli errori correlati degli SSD.

Separare i log dai dati su SSD è più un RPO (obiettivo del punto di ripristino) che un problema di prestazioni. L'idea è che potresti ridurre il tuo RPO separando i log dai dati in modo tale che in caso di fallimento dell'array di dati, l'array di log dovrebbe / potrebbe rimanere accessibile. Il cauto prenderebbe in considerazione una diversa marca / modello di unità in ciascuna delle due matrici per mitigare il problema di fallimento correlato se RPO fosse critico.

I commenti sulla larghezza di banda del bus sono irrilevanti. Se hai bisogno di spostare così tanto IO, hai problemi più grandi di cui preoccuparti.


-4

Esiste un gruppo che concorda sul fatto che su un HDD sarebbe utile separarsi, affermano comunque che per le unità SSD questo non è più necessario.

Quindi per loro voglio chiedere "se non c'è nessun problema di contesa, allora perché un RAID 10? Non c'è più bisogno di stripping! Quindi solo il mirrowing sarebbe abbastanza, e ovviamente non c'è bisogno di 8 unità, 2x il database le dimensioni dovrebbero bastare! ".

Tuttavia la realtà è che se qualcosa ha bisogno di un RAID 10 è il file di registro!

Questo non è solo a causa del problema del sequenziale vs casuale (vedi risorse sotto), ma in realtà è molto cruciale una volta capito come funzionano le unità SSD.

Per farla breve (per una descrizione più lunga, consultare http://arstechnica.com/information-technology/2012/06/inside-the-ssd-revolution-how-solid-state-disks-really-work/ ), un'unità SSD è molto efficace nelle letture e nella scrittura degli zeri, tuttavia per scriverne uno non è così efficiente in quanto deve cancellare l'intera sezione per scriverne anche una sola!

Sebbene questo non sia un problema per le scritture generali, poiché sono comunque bufferate in memoria e scritte nei limiti della pagina, è un grosso problema per il file di registro, poiché il file di registro ignora qualsiasi cache e invece blocca il server SQL fino a quando il i log sono scritti su disco !, il che significa che per ogni scrittura probabilmente ci sarà una cancellazione completa della sezione.

Quindi per ottimizzarlo, suggerirei di dedicare ogni disco aggiuntivo (oltre al doppio della dimensione del database, senza necessità di stripping!) Per il file di registro, in questo modo sarà in grado di elaborarne il maggior numero possibile in un arco di tempo più breve.

RISPOSTA VECCHIA

La risposta è sì, per tre motivi. 1) Casuale vs sequenziale - Mentre è chiaro che SSD ha aumentato drasticamente le prestazioni per le scritture casuali, rimane ancora il problema dei resti casuali vs sequenziali, come si può vedere dai seguenti whitepapaer e collegamenti:

2) Affidabilità - Esiste una forte probabilità che tutte le unità SSD si guastino simultaneamente, nel qual caso RAID non è una protezione, tuttavia poiché un'unità SSD utilizzata esclusivamente per sequenziali ha una durata diversa, questo potrebbe essere il tuo salvagente

3) Contestazione di scrittura: il motivo per cui i log vengono inseriti nel proprio mandrino non è solo a causa di una sequenza casuale o sequenziale, ma anche di una contesa di scrittura, come si può vedere dal fatto che si consiglia anche di avere tempdb su un volume separato che indica che il problema qui riguarda anche la contesa scritta.

E questo dovrebbe valere ancora di più per il file di registro, poiché le scritture sui blocchi di registro bloccano le transazioni da considerarle sottoposte a commit fino a quando non vengono scritte sulla superficie del disco.

In effetti, per i registri è possibile utilizzare le normali unità HDD come white paper di apr Dell all'indirizzo http://www.dell.com/downloads/global/products/pvaul/en/ssd_vs_hdd_price_and_performance_study.pdf

MODIFICARE

Mettere tempdb sul proprio array per girare i dischi è raccomandato da Microsoft, vedi

e numerosi altri ed è l'idea generalmente accettata in SQL Server, mentre nessuno ha espresso problemi con la divisione dell'array.

Inoltre, il team di SQL Server ha creato i concetti di partizionamento filegroup e partioining, con la sola intenzione di spostarli su un array separato.

E in effetti MSDN all'indirizzo http://msdn.microsoft.com/en-us/library/ms187087(v=sql.105) raccomanda che ci potrebbe essere un vantaggio in termini di prestazioni dalla separazione dell'indice non cluster sul proprio array, (sebbene questo non dovrebbe essere preso come un consiglio generale per ogni situazione, solo per carichi di lavoro specifici, vedere maggiori informazioni su http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA -Monkey.aspx ).

In quanto tale, è solo un'estensione logica per dire che il motivo della separazione sui dischi rotanti non è solo legato al problema delle letture sequenziali e casuali, ma alla contesa di scrittura generale, qualcosa che si applica anche agli SSD.

Anche se è possibile che alcune persone non siano d'accordo con quel consiglio e considerino che non vi è alcun vantaggio nel mettere tempdb e il suo volume (come Jack Douglas), e potresti persino affermare che non vi è alcun vantaggio nel separare i file di registro (come Mark Storey -Smith), e invece sostengono che la divisione dell'array è molto peggio, ancora non dimenticare che si tratta di un nuovo approccio che va contro l'approccio generale accettato suggerito da Microsoft e dalla community, e finora nessuno ha fornito collegamenti a test benchmark per supportarlo.

Quindi la mia parola a tutti i downvoter è che trovo molto poco etico sottovalutare un post solo perché ha un'opinione diversa dalla tua, specialmente quando 1) la tua opinione va contro la teoria generale accettata 2) ed è contro i venditori (Microsoft ) possiede la documentazione 3) e non hai fornito alcuna prova solo un parere.

Ma in questo caso è ancora più ridicolo, dal momento che il mio post non è altro che l'estensione logica di questa teoria, quindi uno che considera questo post come consiglio di letto deve ovviamente tornare a tutti i post che consigliano questa teoria e li votano .

Supponiamo che qualcuno decida che il RAID è una teoria della vecchia scuola e declassa tutti i post che lo raccomandano, che senso ha?


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Paul White 9
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.