Database
 sql >> Datenbank >  >> RDS >> Database

Sequenzielle Durchsatzgeschwindigkeiten und Feeds

Ich habe schon seit geraumer Zeit über die Bedeutung der sequentiellen Durchsatzleistung für SQL Server gesprochen. Der sequenzielle Durchsatz ist für viele gängige Vorgänge in SQL Server von entscheidender Bedeutung, darunter:

  1. Vollständige Datenbanksicherungen und -wiederherstellungen
  2. Indexerstellung und Wartungsarbeiten
  3. Initialisieren von Replikations-Snapshots und Abonnements
  4. Initialisieren von AlwaysOn AG-Replikaten
  5. Initialisieren von Datenbankspiegeln
  6. Sekundäre Log-Shipping werden initialisiert
  7. Workloads für relationale Data Warehouse-Abfragen
  8. ETL-Operationen für relationale Data Warehouses

Trotz der Bedeutung des sequentiellen Durchsatzes für SQL Server sehe ich immer noch viele Leute, die sich nur konzentrieren auf zufällige E/A-Leistung und Latenz, während die Leistung des sequentiellen Durchsatzes weitgehend ignoriert wird. Wenn Sie über die sequenzielle Durchsatzleistung nachdenken, müssen Sie den vollständigen Pfad der Daten berücksichtigen, von der Speicherung auf Ihren Speichermedien bis zur Nutzung durch Ihre Prozessorkerne.

Je nachdem, welche Art von Speichertechnologie Sie verwenden, kann sie über eine Ethernet-Netzwerkschnittstellenkarte (NIC) oder eine InfiniBand-Hostkanaladapterkarte (HCA) mit Ihrem Hostserver verbunden sein. Dieser Verbindungstyp wird am häufigsten für iSCSI-SANs und für SMB-3.0-Dateifreigaben (Remote Server Message Block) verwendet. Microsoft TechNet bietet eine gute Referenz zu diesem Thema mit dem Titel Improve Performance of a File Server with SMB Direct.

Der theoretische sequentielle Durchsatz eines einzelnen NIC/HCA-Geräts (pro Port) ist in Abbildung 1 dargestellt:

Abbildung 1:Theoretischer NIC/HCA-Durchsatz

Nur für den Fall, dass Sie sich fragen, worauf sich InfiniBand (QDR) oder Infiniband (FDR) beziehen, die InfiniBand Trade Association unterhält eine InfiniBand-Roadmap, die die Geschichte und die geplanten Fortschritte bei der InfiniBand-Bandbreite in den nächsten Jahren aufzeigt. Infiniband verfügt über eine Liste von Akronymen, die die relative Leistung eines InfiniBand-Links beschreiben, wie unten gezeigt:

  • SDR – Single Data Rate
  • DDR – Doppelte Datenrate
  • QDR – Quad-Datenrate
  • FDR – Vierzehn Datenrate
  • EDR – Verbesserte Datenrate
  • HDR – Hohe Datenrate
  • NDR – Nächste Datenrate

Herkömmliche FC-SANs (Fibre Channel) verwenden normalerweise einen oder mehrere Host-Bus-Adapter (HBA), die über einen oder mehrere Ports für optische Kabel verfügen, die mit einem FC-Switch oder direkt mit dem FC-SAN selbst verbunden sind. 16-GB-FC-HBAs sind immer noch relativ selten weit verbreitet, daher haben die meisten Hostserver immer noch entweder 4-GB- oder 8-GB-FC-HBAs.

Der theoretische sequentielle Durchsatz eines einzelnen HBA-Geräts (pro Port) ist in Abbildung 2 dargestellt:

Abbildung 2:Theoretischer HBA-Durchsatz

Unabhängig davon, welche Art von Schnittstellengerät oder Technologie Sie verwenden, müssen Sie sich Gedanken darüber machen, in welche Art von Erweiterungsbussteckplatz es auf Ihrem Hostserver eingesteckt ist. Abhängig vom Alter Ihres Servers und dem verwendeten Prozessortyp kann dies einen enormen Einfluss auf die Gesamtbandbreite haben, die der Bussteckplatz unterstützen kann. Peripheral Component Interconnect Express (PCIe) Gen 3-Steckplätze haben die doppelte Bandbreite pro Lane als ein älterer PCIe Gen 2-Steckplatz. Sie können feststellen, wie viele und welche Art von Erweiterungssteckplätzen Sie in Ihrem Hostserver haben, indem Sie die Spezifikationen und die Dokumentation für Ihre Marke und Ihr Servermodell einsehen. Bisher unterstützen nur Intel Xeon E3 v2-, Xeon E3 v3-, Xeon E5-, Xeon E5 v2-, Xeon E5 v3- und Xeon E7 v2-Prozessoren PCIe Gen 3-Steckplätze. Alles, was älter ist, hat PCIe Gen 2-Steckplätze oder vielleicht sogar PCIe Gen 1-Steckplätze, wenn es (in Bezug auf Computer) extrem alt ist.

Der theoretische sequentielle Durchsatz eines einzelnen PCIe-Steckplatzes ist in Abbildung 3 dargestellt:

Abbildung 3:Theoretischer Erweiterungssteckplatzdurchsatz

Seit der Einführung der Intel Nehalem-Mikroarchitektur im Jahr 2008 haben alle 2P- und größeren Intel-Serverprozessoren Intel QuickPath Interconnect (QPI) für Verbindungen zwischen den Prozessoren und dem Speicher in einem Server unterstützt, wodurch diese neueren Prozessoren Non-Uniform Memory Access unterstützen (NUMA), der den älteren Front-Side-Bus (FSB) ersetzte. NUMA verbessert die Skalierbarkeit ziemlich deutlich, wenn die Anzahl der physischen Prozessoren in einem System zunimmt, insbesondere wenn Sie vier oder mehr physische Prozessoren in einem Hostsystem haben.

Moderne Intel-Prozessoren verfügen über integrierte Speichercontroller, die Intel QPI unterstützen. Wenn Sie sich die Spezifikationen für einen bestimmten Intel-Prozessor in der Online-ARK-Datenbank ansehen, können Sie seine bewertete QPI-Leistung in GigaTransfers pro Sekunde (GT/s) sehen. Ein GigaTransfer pro Sekunde sind einfach eine Milliarde Operationen, die Daten pro Sekunde übertragen.

Beispielsweise hat ein moderner High-End-Prozessor Intel Xeon E5-2667 v3 (Haswell-EP) eine Intel QPI-Geschwindigkeit von 9,6 GT/s, während ein älterer Low-End-Prozessor Intel Xeon E5503 (Nehalem-EP) eine hat Intel QPI-Geschwindigkeit von nur 4,8 GT/Sek. Selbst bei Prozessoren der gleichen Mikroarchitekturgeneration werden Sie Unterschiede in der bewerteten Intel QPI-Geschwindigkeit feststellen. Beispielsweise wird in der 22-nm-Haswell-EP-Familie der Low-End-Prozessor Intel Xeon E5-2603 v3 mit 6,4 GT/s bewertet, während der High-End-Prozessor Intel Xeon E5-2660 v3 mit 9,6 GT/s bewertet wird. Intel Xeon E5-, E5 v2- und E5 v3-Prozessoren haben zwei QPI-Links pro Prozessor, während Prozessoren der Intel E7- und E7 v2-Familie drei QPI-Links pro Prozessor haben.

Der theoretische sequentielle Durchsatz eines einzelnen Intel QPI-Links ist in Abbildung 4 dargestellt:

Abbildung 4:Theoretischer Intel QPI-Durchsatz

Abhängig vom Alter Ihres Host-Servers, dem genauen Prozessor, den er verwendet, und der Art, Geschwindigkeit und Menge des installierten Speichers, stehen Ihnen von jedem Speichermodul unterschiedliche Mengen an theoretischem sequentiellen Durchsatz zur Verfügung. Alle modernen Intel-Prozessoren verfügen über integrierte Speichercontroller, die die Menge und Frequenz des vom Prozessor unterstützten Speichers steuern. Die neuesten Vintage-Hostserver verwenden DDR3-Speicher, während die Haswell-EP-Prozessoren der neuesten Generation (Intel Xeon E5 v3-Familie) DDR4-Speicher unterstützen. DDR4-Speicher unterstützt höhere Geschwindigkeiten, höheren Durchsatz, höhere Speicherdichte, geringeren Stromverbrauch und verbesserte Zuverlässigkeit im Vergleich zu DDR3-Speicher.

Der theoretische sequentielle Durchsatz eines einzelnen Speichermoduls ist in Abbildung 5 dargestellt:

Abbildung 5:Theoretischer Speichermoduldurchsatz

Wenn Sie sich die einzelnen Komponenten in einem bestehenden oder geplanten neuen System ansehen, sollten Sie nach nicht übereinstimmenden Komponenten Ausschau halten, die künstliche sequenzielle Leistungsengpässe in das System einführen können. Beispielsweise haben Sie möglicherweise einen brandneuen Server mit High-End-Prozessoren, der durch die Tatsache lahmgelegt wird, dass er einen 4-GB-FC-HBA für den Zugriff auf ein SAN verwendet. Ein weiteres Beispiel könnte eine sehr schnelle PCIe-Flash-Speicherkarte oder ein RAID-Controller sein, der in einem PCIe 2.0 x4-Steckplatz mit geringer Bandbreite installiert wurde, wodurch der sequenzielle Gesamtdurchsatz des Geräts künstlich begrenzt wurde.

Ich weiß, dass dies eine Menge technischer Informationen war, die verdaut werden mussten, insbesondere für Leute, die keine Hardware-Enthusiasten sind. Ich denke, die Hauptidee, die Sie aus diesem Artikel mitnehmen sollten, ist, dass die sequenzielle Durchsatzleistung für viele gängige SQL Server-Aufgaben und -Workloads ziemlich wichtig ist. Die Details auf niedriger Ebene zu Prozessoren, Speichertypen, Erweiterungssteckplätzen und Erweiterungsgeräten machen tatsächlich einen großen Unterschied in der sequentiellen Durchsatzleistung, die Sie von einem Server und seinem Speichersubsystem erhalten. Ein guter sequenzieller Durchsatz macht Ihr Leben als Datenbankprofi so viel einfacher und ermöglicht es Ihnen, Ihr Unternehmen auf einem viel höheren Niveau zu unterstützen.