Platzieren des Transaktionsprotokolls auf einem separaten Volume [Solid State]?

12

Transaktionsprotokolle werden häufig auf einem separaten Volume isoliert. Der Grund für diese Vorgehensweise besteht meines Wissens darin, dass die Daten des Transaktionsprotokolls nacheinander geschrieben werden - und Festplatten Schreibvorgänge nacheinander mit weitaus höherer Geschwindigkeit ausführen können als nach dem Zufallsprinzip. Dies liegt an der kleinen Nadel im Laufwerk, die sich beim Schreiben aufeinanderfolgender Datenblöcke viel kürzer bewegen muss als beim zufälligen Schreiben.

(Entschuldigung für die naive Interpretation. Ich versuche nur, einen Sinn für das zu finden, was ich gelesen habe.)

In diesem Sinne… Mir fällt auf, dass auf Solid-State-Laufwerken keine kleinen Nadeln, Platten und Dinge herumlaufen. Wenn sich meine Datenbank und mein Transaktionsprotokoll beide auf einem einzelnen RAID 5 von acht Solid-State-Laufwerken befinden, ist es dann wirklich sinnvoll, das Transaktionsprotokoll auf ein separates Volume zu verschieben? Wenn der vermeintliche Effizienzgewinn auf der Voraussetzung von sequenziellen Schreibvorgängen beruht, die die Entfernung verringern, um die sich die Nadeln bewegen und die Platten drehen, und ein Solid-State-Laufwerk keine dieser beweglichen Teile aufweist, was kann ich durch Isolieren des Protokolls gewinnen?

Chad Decker
quelle
Sie müssen noch über Busse und Puffer nachdenken. Ich würde sie aufgrund der E / A-Musterunterschiede getrennt halten. Wenn Ihre Apps nicht sehr transaktionsorientiert sind, kennen Sie den Unterschied wahrscheinlich nicht, wenn die Kosten eine Rolle spielen.
Eric Higgins
Wenn Sie den Begriff "Bus" verwenden ... beziehen Sie sich auf den Pfad, den die Daten vom Motherboard zur RAID-Karte nehmen?
Chad Decker
2
"Gibt es wirklich Vorteile beim Verschieben des Transaktionsprotokolls auf ein separates Volume?" mit ziemlicher Sicherheit nicht, aber es ist wirklich eine Geschwindigkeit des Kopf , um das gesamte Array zu RAID10 bewegen und Zuverlässigkeit des Kopf zu über-Provisioning (dh unter Partitionierung) die SSDs
Jack sagt Versuch topanswers.xyz

Antworten:

10

Kurz gesagt, verwenden Sie ein einzelnes Array. Es ist unwahrscheinlich, dass die Trennung von Protokollen und Daten auf 8 SSD-Laufwerken zu einem Leistungsgewinn führt. Unter SQL auf SSDs: Hot and Crazy Love finden Sie einen detaillierten (und unterhaltsamen) Kommentar zu SSDs. Beachten Sie insbesondere die Hinweise zu korrelierten Ausfällen von SSDs.

Das Trennen von Protokollen von Daten auf SSDs ist eher ein RPO (Recovery Point Objective) als ein Leistungsproblem. Die Idee ist, dass Sie Ihre RPO reduzieren könnten, indem Sie Protokolle von Daten trennen, sodass Ihr Protokollarray im Falle eines Ausfalls des Datenarrays weiterhin zugänglich sein sollte / könnte. Die vorsichtige Person würde in jedem der beiden Arrays eine andere Marke / ein anderes Laufwerksmodell in Betracht ziehen, um das Problem des korrelierten Ausfalls zu mindern, wenn der RPO kritisch ist.

Die Kommentare zur Busbandbreite sind irrelevant. Wenn Sie so viel E / A verschieben müssen, müssen Sie sich um größere Probleme kümmern.

Mark Storey-Smith
quelle
-4

Es gibt eine Gruppe, die zustimmt, dass es vorteilhaft wäre, eine Festplatte zu trennen. Sie behaupten jedoch, dass dies für SSD-Laufwerke nicht mehr benötigt wird.

Ich möchte sie also fragen: "Wenn es keine Streitfrage gibt, warum dann ein RAID 10? Es ist kein Strippen mehr erforderlich. Mirrowing allein würde also ausreichen, und natürlich sind keine 8 Laufwerke erforderlich, 2x die Datenbank Größe sollte ausreichen! "

Die Realität ist jedoch, dass, wenn etwas ein RAID 10 benötigt, es die Protokolldatei ist!

Dies ist nicht nur auf das Problem von sequentiellen vs zufälligen (siehe Ressourcen unten) zurückzuführen, sondern es ist auch sehr wichtig, wenn Sie wissen, wie SSD-Laufwerke funktionieren.

Um es kurz zu machen (für eine längere Beschreibung siehe http://arstechnica.com/information-technology/2012/06/inside-the-ssd-revolution-how-solid-state-disks-really-work/ ), Ein SSD-Laufwerk ist sehr effizient beim Lesen und beim Auslesen von Nullen. Das Auslesen von Nullen ist jedoch nicht so effizient, da der gesamte Abschnitt gelöscht werden muss, um auch nur eine einzige zu schreiben.

Dies ist zwar kein Problem für allgemeine Schreibvorgänge, da sie ohnehin im Speicher gepuffert und in Seitengrenzen geschrieben sind, es ist jedoch ein Hauptproblem für die Protokolldatei, da die Protokolldatei den Cache umgeht und stattdessen SQL Server-Blöcke bis zum Protokolle werden auf Disc! geschrieben, was bedeutet, dass bei jedem Schreibvorgang wahrscheinlich ein vollständiger Abschnitt gelöscht wird.

Um es zu optimieren, würde ich vorschlagen, jede zusätzliche CD (außer der doppelten Datenbankgröße, kein Abisolieren erforderlich!) Für die Protokolldatei zu reservieren. Auf diese Weise können so viele wie möglich in einem kürzeren Zeitraum verarbeitet werden.

Ältere Antwort

Die Antwort lautet aus drei Gründen: Ja. 1) Random vs Sequential - Während es klar ist, dass SSD die Leistung für zufällige Schreibvorgänge dramatisch steigert, bleibt das Problem von Random vs Sequential bestehen, wie aus den folgenden Whitepapaern und Links hervorgeht:

2) Zuverlässigkeit - Es besteht eine hohe Wahrscheinlichkeit, dass alle SSD-Laufwerke gleichzeitig ausfallen. In diesem Fall ist RAID kein Schutz. Da jedoch ein SSD-Laufwerk, das ausschließlich für sequentielle Zwecke verwendet wird, eine andere Lebensdauer hat, kann dies Ihr Lebensretter sein

3) Schreibkonflikt - Der Grund für das Ablegen von Protokollen auf der eigenen Spindel liegt nicht nur in zufälligen oder sequentiellen Konflikten, sondern auch in Schreibkonflikten, wie man an der Tatsache erkennen kann, dass es auch empfohlen wird, tempdb auf einem separaten Volume zu haben, das angibt dass es hier auch um Schreibkonflikte geht.

Dies sollte noch mehr für die Protokolldatei gelten, da Schreibvorgänge in das Protokoll verhindern, dass Transaktionen als festgeschrieben betrachtet werden, bis sie auf die Plattenoberfläche geschrieben werden.

Tatsächlich können Sie für die Protokolle normale Festplatten als Whitepaper von Dell unter http://www.dell.com/downloads/global/products/pvaul/en/ssd_vs_hdd_price_and_performance_study.pdf verwenden

BEARBEITEN

Es wird von Microsoft empfohlen, tempdb für das Drehen von Discs auf ein eigenes Array zu setzen

und zahlreiche andere und es ist der allgemein akzeptierte Begriff in SQL Server, während niemand ein Problem mit der Aufteilung des Arrays zum Ausdruck gebracht.

Darüber hinaus hat das SQL Server-Team die Konzepte der Dateigruppen- und Partitionierungspartitionierung erstellt, mit der alleinigen Absicht, sie auf ein separates Array verschieben zu können.

Tatsächlich empfiehlt der MSDN unter http://msdn.microsoft.com/en-us/library/ms187087(v=sql.105) , dass die Trennung des nicht gruppierten Index in einem eigenen Array möglicherweise einen Leistungsvorteil mit sich bringt Dies sollte nicht als allgemeiner Ratschlag für jede Situation verstanden werden, sondern nur für bestimmte Workloads. Weitere Informationen finden Sie unter http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA -Monkey.aspx ).

Als solche ist es nur eine logische Erweiterung zu sagen, dass der Grund für die Trennung auf sich drehenden Disks nicht nur mit dem Problem der sequenziellen oder zufälligen Lesevorgänge zusammenhängt, sondern auch mit allgemeinen Schreibkonflikten, was auch für SSDs gilt.

Während es sein kann, dass einige Leute mit diesem Rat nicht einverstanden sind und der Meinung sind, dass es keinen Vorteil bringt, Tempdb und sein eigenes Volume (als Jack Douglas) zu platzieren, und Sie könnten sogar behaupten, dass es keinen Vorteil bringt, die Protokolldateien zu trennen (als Mark Storey) - Smith) und behaupten stattdessen, dass die Aufteilung des Arrays viel schlimmer ist, vergessen Sie immer noch nicht, dass dies ein neuer Ansatz ist, der gegen den allgemein akzeptierten Ansatz von Microsoft und der Community verstößt, und bisher hat noch niemand Links zu diesem Ansatz bereitgestellt Benchmark-Tests, um dies zu unterstützen.

Daher halte ich es für sehr unethisch, einen Beitrag abzustimmen, nur weil er eine andere Meinung hat als Sie, insbesondere wenn 1) Ihre Meinung gegen die allgemein anerkannte Theorie verstößt 2) und gegen die Anbieter (Microsoft) ) eigene Dokumentation 3) und Sie haben keinen Beweis nur eine Meinung geliefert.

Aber in diesem Fall ist es noch lächerlicher, da mein Beitrag nichts weiter als die logische Erweiterung dieser Theorie ist, und einer, der diesen Beitrag als Bettberatung ansieht, natürlich auf alle Beiträge zurückgreifen muss, die diese Theorie empfehlen, und sie ablehnen .

Angenommen, jemand entscheidet, dass RAID eine alte Schultheorie ist, und stuft alle Posts ab, die es empfehlen. Wie macht dies Sinn?

yoel halb
quelle
Kommentare sind nicht für längere Diskussionen gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Paul White 9.