sql >> Databasteknik >  >> RDS >> Database

Sekventiella genomströmningshastigheter och flöden

Jag har pratat om vikten av sekventiell genomströmningsprestanda för SQL Server ganska länge. Sekventiell genomströmning är avgörande för många vanliga operationer i SQL Server, inklusive:

  1. Fullständig säkerhetskopiering och återställning av databas
  2. Skapande och underhåll av index
  3. Initiering av replikeringsögonblicksbilder och prenumerationer
  4. Initiering av AlwaysOn AG-repliker
  5. Initiering av databasspeglar
  6. Initialisering av sekundära loggleveranser
  7. Arbetsbelastningar för relationsdatalagerfrågor
  8. Etl-verksamhet för relationsdatalager

Trots vikten av sekventiell genomströmning för SQL Server ser jag fortfarande många människor som fokuserar endast på slumpmässig I/O-prestanda och latens, samtidigt som man till stor del ignorerar sekventiell genomströmningsprestanda. När du funderar på sekventiell genomströmningsprestanda, måste du överväga hela vägen för data, från att den ligger i vila på ditt lagringsmedium till att den konsumeras av dina processorkärnor.

Beroende på vilken typ av lagringsteknik du använder kan den vara ansluten till din värdserver med ett Ethernet-nätverkskort (NIC) eller InfiniBand-värdkanaladapter (HCA)-kort. Denna typ av anslutning är vanligast för iSCSI SAN och för fjärrservermeddelandeblock (SMB) 3.0-filresurser. Microsoft TechNet har en bra referens om detta ämne, som heter Förbättra prestanda för en filserver med SMB Direct.

Den teoretiska sekventiella genomströmningen för en enda NIC/HCA-enhet (per port) visas i figur 1:

Figur 1:Teoretisk NIC/HCA-genomströmning

Om du undrar vad InfiniBand (QDR) eller Infiniband (FDR) refererar till, upprätthåller InfiniBand Trade Association en InfiniBand Roadmap som visar historiken och planerade framsteg inom InfiniBands bandbredd under de kommande åren. Infiniband har en lista med akronymer som beskriver den relativa prestandan för en InfiniBand-länk som visas nedan:

  • SDR – Single Data Rate
  • DDR – dubbel datahastighet
  • QDR – Quad Data Rate
  • FDR – fjorton datahastighet
  • EDR – Enhanced Data Rate
  • HDR – Hög datahastighet
  • NDR – Nästa datahastighet

Traditionella fiberkanal-SAN (FC) använder vanligtvis en eller flera värdbussadaptrar (HBA) som har en eller flera portar för optiska kablar som ansluts till en FC-switch eller direkt till själva FC SAN. Det är fortfarande relativt sällsynt att se 16 Gb FC HBAs i utbredd användning, så de flesta värdservrar har fortfarande antingen 4Gb eller 8Gb FC HBAs.

Den teoretiska sekventiella genomströmningen för en enda HBA-enhet (per port) visas i figur 2:

Figur 2:Teoretisk HBA-genomströmning

Oavsett vilken typ av gränssnittsenhet eller teknik du använder, måste du vara orolig över vilken typ av expansionsbussplats den är ansluten till på din värdserver. Beroende på åldern på din server och vilken typ av processor den använder kan detta ha en enorm inverkan på den totala bandbredden som bussplatsen kan stödja. Peripheral Component Interconnect Express (PCIe) Gen 3-kortplatser har dubbelt så mycket bandbredd per körfält som en äldre PCIe Gen 2-plats. Du kan bestämma hur många och vilken typ av expansionsplatser du har i din värdserver genom att titta på specifikationerna och dokumentationen för ditt märke och din servermodell. Hittills är det bara processorer i familjen Intel Xeon E3 v2, Xeon E3 v3, Xeon E5, Xeon E5 v2, Xeon E5 v3 och Xeon E7 v2-familjen som stöder PCIe Gen 3-platser. Allt som är äldre än detta kommer att ha PCIe Gen 2-platser, eller kanske till och med PCIe Gen 1-platser om det är extremt gammalt (i datortermer).

Den teoretiska sekventiella genomströmningen av en enda PCIe-plats visas i figur 3:

Figur 3:Teoretisk expansionsplatskapacitet

Sedan introduktionen av Intel Nehalem-mikroarkitekturen tillbaka 2008, har alla 2P och större Intel-serverprocessorer stödt Intel QuickPath Interconnect (QPI) för anslutningar mellan processorerna och minnet i en server, vilket ger dessa nyare processorer stöd för Non-Uniform Memory Access (NUMA), som ersatte den äldre främre bussen (FSB). NUMA förbättrar skalbarheten ganska avsevärt när antalet fysiska processorer i ett system ökar, särskilt när du har fyra eller fler fysiska processorer i ett värdsystem.

Moderna Intel-processorer har integrerade minneskontroller som stöder Intel QPI. När du tittar på specifikationerna för en viss Intel-processor i online-ARK-databasen kommer du att kunna se dess rankade QPI-prestanda i GigaTransfers per sekund (GT/sek). En GigaTransfer per sekund är helt enkelt en miljard operationer som överför data per sekund.

Till exempel har en modern, avancerad Intel Xeon E5-2667 v3-processor (Haswell-EP) en Intel QPI Speed ​​på 9,6 GT/sek, medan en äldre, low-end Intel Xeon E5503-processor (Nehalem-EP) har en Intel QPI-hastighet på endast 4,8 GT/sek. Även bland processorer från samma generations mikroarkitektur kommer du att se variationer i den rankade Intel QPI-hastigheten. Till exempel, i 22nm Haswell-EP-familjen, är den låga Intel Xeon E5-2603 v3-processorn klassad till 6,4 GT/sek, medan den avancerade Intel Xeon E5-2660 v3-processorn är klassad till 9,6 GT/sek. Intel Xeon E5, E5 v2 och E5 v3-processorer har två QPI-länkar per processor, medan Intel E7- och E7 v2-familjens processorer har tre QPI-länkar per processor.

Den teoretiska sekventiella genomströmningen av en enda Intel QPI-länk visas i figur 4:

Figur 4:Teoretisk Intel QPI-genomströmning

Beroende på åldern på din värdserver, den exakta processorn den använder och typen, hastigheten och mängden minne som är installerat, kommer du att ha olika mängd teoretisk sekventiell genomströmning tillgänglig från varje minnesmodul. Alla moderna Intel-processorer har integrerade minneskontroller som styr mängden och frekvensen på det minne som processorn kommer att stödja. De senaste vintage-värdservrarna kommer att använda DDR3-minne, medan den senaste generationens Haswell-EP-processorer (Intel Xeon E5 v3-familjen) stöder DDR4-minne. DDR4-minne stöder högre hastigheter, högre genomströmning, högre minnestäthet, lägre strömförbrukning och förbättrad tillförlitlighet jämfört med DDR3-minne.

Den teoretiska sekventiella genomströmningen av en enda minnesmodul visas i figur 5:

Figur 5:Teoretisk minnesmodulkapacitet

När du tittar på de enskilda komponenterna i ett befintligt eller planerat nytt system, bör du vara på utkik efter komponenter som inte matchar varandra som kan introducera artificiella sekventiella prestandaflaskhalsar i systemet. Till exempel kan du ha en helt ny server med avancerade processorer som är förlamad av det faktum att den använder en 4Gb FC HBA för att komma åt ett SAN. Ett annat exempel kan vara ett mycket snabbt PCIe-flashminneskort eller RAID-kontroller som installerades i en PCIe 2.0 x4-kortplats med låg bandbredd, vilket på konstgjord väg begränsade enhetens totala sekventiella genomströmning.

Jag vet att det här har varit mycket teknisk information att smälta, särskilt för människor som inte är hårdvaruentusiaster. Jag tror att huvudidén du bör ta bort från den här artikeln är att sekventiell genomströmningsprestanda är ganska viktig för många vanliga SQL Server-uppgifter och arbetsbelastningar. Lågnivådetaljerna om processorer, minnestyper, expansionsplatser och expansionsenheter gör faktiskt stor skillnad i den sekventiella genomströmningsprestanda som du får från en server och dess lagringsundersystem. Att ha bra sekventiell genomströmning gör ditt liv så mycket enklare som databasproffs, vilket gör att du kan stödja din organisation på en mycket högre nivå.


  1. Hur använder man ett ALIAS i en PostgreSQL ORDER BY-klausul?

  2. Det aktuella tillståndet för Open Source Backup Management för PostgreSQL

  3. ORA-12514 TNS:listener känner för närvarande inte till tjänst som efterfrågas i anslutningsbeskrivningen

  4. Hur får man tillgång till strukturen och får kolumnlistan, datatyper av refcursor?