Beste Block- / Streifengröße für das Protokollvolumen?

7

Ich weiß, dass die allgemeine Empfehlung für das Datenvolumen in SQL Server darin besteht, 64-KB-Blöcke / -Streifen zu verwenden, da die E / A normalerweise in ganzen Bereichen ausgeführt wird. Ich kann jedoch keine guten Informationen zu Protokolldatei-E / A finden.

Ich habe die E / A-Aktivität in Process Monitor eine Weile beobachtet und es scheint, dass die E / A-Größen der Protokolldatei zwischen 512 Byte und knapp 64 KB liegen. Ich vermute, dies hängt von der Größe der zu protokollierenden Transaktion ab, und große Transaktionen werden mit mehreren Schreibvorgängen von ~ 64 KB aufgeteilt.

Wenn ich also davon ausgehe, dass die Partition auf die RAID-Streifen ausgerichtet ist, kann man davon ausgehen, dass 64-KB-Blöcke / -Streifen die beste Leistung erzielen, wenn alle anderen Faktoren gleich sind? Ich würde erwarten, dass die kleineren Transaktionen, dh diejenigen mit 512-Byte-Schreibvorgängen, nicht stark genug sind, damit die große Blockgrößenstrafe einen signifikanten Einfluss hat, während die viel größeren Transaktionen, die viele 64-KB-Blöcke in schneller Folge schreiben, dies tun würden es ist wichtiger, sich darauf einzustellen.

db2
quelle

Antworten:

5

64k Blöcke sind normalerweise am besten. Protokollschreibvorgänge sollten eigentlich bei etwa 60 KB maximal sein, aber bei 64 KB sind Sie an der Größe des physischen Blocks auf der Festplatte ausgerichtet.

mrdenny
quelle
Sehr interessant. Ich habe das Volume neu erstellt (die Partition war falsch ausgerichtet, die Stripe-Größe war falsch und es wurden 4-KB-Cluster verwendet), aber laut den Ergebnissen von SQLIO hat sich die Leistung kaum verändert. Ich vermute, der Controller-Schreibcache hat einen Teil der Langsamkeit maskiert. Aber wenn / wenn der Akku in den Eimer tritt, wird zumindest die Leistung nicht so stark beeinträchtigt.
db2
5

Beachten Sie, dass es zwei verschiedene Arten der Ausrichtung gibt: Blockgröße und Versatz. Beide Ausrichtungstypen konzentrieren sich auf die Unterschiede zwischen der Partitionierung / Formatierung des Betriebssystems und der Partitionierung / Formatierung des zugrunde liegenden Speicherarrays.

Eine Festplatte mit Blockausrichtung bedeutet, dass das Betriebssystem und das zugrunde liegende Speicherarray auf die gleichen Blockgrößen formatiert sind. Hier können einige Leistungssteigerungen erzielt werden, die jedoch im Allgemeinen vernachlässigbar sind. Microsoft SQL empfiehlt, Protokoll- und Datenlaufwerke mit 64.000 Blöcken zu versehen.

Die Offset-Ausrichtung ist der stille Killer für die Leistung. Wenn Offsets nicht für die ordnungsgemäße Ausrichtung konfiguriert sind, kann ein einzelner Block auf der Betriebssystemebene zwei oder mehr Blöcke auf der Speicherebene überlappen. Wenn das Betriebssystem diesen einzelnen Block anfordert, löst es die Speicherschicht aus, alle Speicherschichtblöcke abzurufen und zurückzugeben. Wenn Sie einen falsch ausgerichteten Versatz korrigieren, wird eine Leistungssteigerung angezeigt.

Geben Sie hier die Bildbeschreibung ein

Dieses Bild zeigt, wie auf den verschiedenen Ebenen die Festplattenausrichtung deaktiviert sein kann, um Betriebssystem, VMware-Schicht und Speicherarray einzuschließen. Wenn Sie auf einem physischen Server ausgeführt werden, konzentrieren Sie sich nur auf die erste und letzte Zeile im Diagramm.

Siehe auch:

Ro Yo Mi.
quelle