sql >> Database >  >> RDS >> Sqlserver

SQL Server 2014 uitvoeren op een virtuele Azure-machine

Microsoft maakt het steeds eenvoudiger om SQL Server 2014 te draaien op een virtuele Azure-machine in een van de zeventien Azure-datacenters van Microsoft. U kunt een vooraf geconfigureerde virtuele machine uitvoeren met een vooraf geconfigureerd SQL Server 2014-exemplaar vanuit de Azure-galerie op uw keuze van een virtuele Azure-machine van elke grootte. Een van de keuzes uit de galerij is "SQL Server 2014 Enterprise Optimized for Transactional Workloads" die draait op Windows Server 2012 R2. Een voordeel van het gebruik van een vooraf geconfigureerde galerijafbeelding is dat u niet hoeft te betalen voor SQL Server 2014-licenties. U betaalt gewoon de uurkosten voor de editie van SQL Server en de grootte van de virtuele machine die u kiest.

SQL Server 2014-configuratieopties

Microsoft legt uit dat "deze Enterprise Edition-image is geoptimaliseerd voor OLTP-workloads en bedoeld is voor VM-formaten zoals A4, A7, A8 en A9. Na implementatie wordt de VM geleverd met vooraf geconfigureerde Windows Storage Spaces." Microsoft doet ook wat configuratiewerk op instantieniveau op SQL Server 2014, hoewel ze niet ver genoeg gaan met wat ik zou beschouwen als standaard best practices.

Ze creëren acht tempdb-gegevensbestanden die allemaal 25600 MB groot zijn, met een autogrow-toename van 1024 MB, wat een goede standaardkeuze is. Ze schakelen ook TF1117 en TF1118 in als opstarttraceervlaggen, wat ook goede keuzes zijn voor SQL Server. Ten slotte maakt Microsoft ook directe initialisatie van bestanden mogelijk en vergrendelt pagina's in het geheugen van het besturingssysteem, waar ik het ook mee eens ben.

Ik zou liever hebben dat Microsoft ook enkele wijzigingen aanbrengt in deze configuratie-opties op instantieniveau:

  1. back-upcompressie standaard
  2. kostendrempel voor parallellisme
  3. maximale mate van parallellisme
  4. max. servergeheugen (MB)
  5. optimaliseren voor ad-hocworkloads

Back-upcompressie moet in de meeste gevallen standaard zijn ingeschakeld. De kostendrempel voor parallellisme moet vaak worden verhoogd naar een hogere waarde dan de standaardwaarde van 5, afhankelijk van uw werkbelasting. De maximale mate van parallellisme moet gewoonlijk worden gewijzigd in een niet-standaardwaarde op basis van het aantal kernen in een NUMA-knooppunt. Deze instelling is ook afhankelijk van uw werklast. Max. servergeheugen moet worden ingesteld op een niet-standaardwaarde op basis van de hoeveelheid RAM in de virtuele machine en wat u uitvoert (naast de SQL Server-database-engine) op de VM. Ten slotte denk ik dat optimaliseren voor ad-hocworkloads moet worden ingeschakeld, vrijwel in alle gevallen.

Ter verdediging van Microsoft zou het moeilijk zijn om voor sommige van deze items een bevredigende configuratiekeuze te maken zonder (vooraf) de details van uw VM-grootte en verwachte databaseserverwerkbelasting te kennen. Dat laat u de taak over aan u, net als bij een on-premises SQL Server-instantie.

Size van Azure Virtual Machine

Hoewel u alles kunt kiezen, van een A0 Basic tot een A9 Standard-machine, raadt Microsoft u aan om voor productiegebruik een virtuele machine van het formaat A4 Standard, A7 Standard, A8 Standard of A9 Standard te kiezen. Prijsdetails voor virtuele SQL Server-machines worden hier vermeld.

Kijkend naar de vergelijkende specificaties voor deze aanbevelingen in tabel 1, is het moeilijk te begrijpen waarom u voor een A4 Standard-machine zou willen kiezen, aangezien deze hetzelfde bedrag per uur kost als de grotere A7- of A8 Standard-machines. Kijkend naar de online documentatie, is het in eerste instantie niet erg duidelijk wat het werkelijke verschil is tussen een A7 en een A8 Standard machine. Als we wat dieper graven, wordt de A8 Standard-machine beschouwd als een rekenintensieve instantie, die een snellere 2,6 GHz Intel Xeon E5-2670-processor zou moeten gebruiken, samen met twee netwerkadapters (een 10 Gbps en een 32 Gbps RDMA-compatibel).

De A7 Standard virtuele machine gebruikt een wat tragere 2,2GHz Intel Xeon E5-2660 processor, terwijl de netwerkconnectiviteit standaard 1Gbps Ethernet lijkt te zijn. Hoewel dit klinkt als een aanzienlijk verschil in processor- en netwerkprestaties, is dit niet echt het belangrijkste probleem met de virtuele machines uit de A-serie voor SQL Server-gebruik.

VM-grootte Standaard SQL-tarief SQL Enterprise-tarief Kerntelling RAM-hoeveelheid
A4 Standaard $ 0,80/uur $3.00/uur 8 14GB
A7 Standaard $ 0,80/uur $3.00/uur 8 56GB
A8 Standaard $ 0,80/uur $3.00/uur 8 56GB
A9 Standaard $1,60/uur $6,00/uur 16 112 GB

Tabel 1:A-Series SQL Server Virtual Machine-informatie

Het grootste probleem met alle virtuele machines uit de A-serie zijn de behoorlijk ellendige prestaties van het I/O-subsysteem, ook al heeft Microsoft het schijfsubsysteem vooraf geconfigureerd met Windows Storage Spaces om de best mogelijke prestaties te krijgen, gezien de inherente prestatiebeperkingen van de A- serie virtuele machines en hosts. Afbeelding 1 toont de CrystalDiskMark-resultaten voor de E:-schijf van een A4-standaardmachine uit het East US Azure-datacenter, dat bedoeld is voor transactielogbestanden.

Afbeelding 1:A4-standaard CrystalDiskMark-resultaten

Een veel beter alternatief voor SQL Server zijn de virtuele machines uit de D-serie. Deze virtuele machines kosten hetzelfde per uur als de virtuele machines uit de A-serie van vergelijkbare grootte, en ze hebben lokale SSD-opslag die alleen mag worden gebruikt voor tempdb- en/of bufferpoolextensies (BPE)-bestanden, aangezien ze niet persistent zijn. Enkele relevante specificaties voor virtuele machines uit de D-serie worden weergegeven in Tabel 2.

VM-grootte Standaard SQL-tarief SQL Enterprise-tarief Kerntelling RAM-hoeveelheid
D4 Standaard $ 0,80/uur $3.00/uur 8 28GB
D13 Standaard $ 0,80/uur $3.00/uur 8 56GB
D14 Standaard $1,60/uur $6,00/uur 16 112 GB

Tabel 2:D-Series SQL Server Virtual Machine-informatie

De D4 Standard-machine kost hetzelfde als een A4 Standard-machine, maar heeft twee keer zoveel RAM en wat lokale SSD-opslag. De D13 Standard-machine kost hetzelfde als een A7- of A8 Standard-machine, maar met het voordeel van lokale SDD-opslag. De D14 Standard-machine kost hetzelfde als een A9 Standard-machine, maar heeft ook het voordeel van lokale SSD-opslag. Gezien deze informatie heeft het weinig zin om een ​​virtuele machine uit de A-serie te gebruiken voor SQL Server.

Helaas hebben de permanente schijven voor uw SQL Server-gegevens en logbestanden ook behoorlijk ondermaatse I/O-prestaties in CrystalDiskMark, zoals weergegeven in afbeeldingen 2 en 3.

Figuur 2:D14 standaard CrystalDiskMark-resultaten Figuur 3:D14 standaard CrystalDiskMark-resultaten

De lokale SSD-prestaties zijn gerelateerd aan de grootte van de virtuele Azure-machine, waarbij grotere formaten betere lokale SSD-prestaties krijgen. De prestatieresultaten van CrystalDiskMark voor een D14 Standard-machine in het Azure-datacenter in het oosten van de VS worden weergegeven in afbeelding 4.

Figuur 4:D14 Standard CrystalDiskMark-resultaten voor lokale SSD-opslag

De F:-schijf (voor SQL Server-gegevensbestanden) heeft iets betere resultaten dan de E:-schijf, maar beide schijven hebben een zeer laag prestatieniveau voor SQL Server.

Conclusie

Het lijkt vrij duidelijk dat de machines uit de D-serie beter geschikt zijn voor SQL Server-gebruik dan de machines uit de A-serie. Het is ook logisch om goed te letten op de grootte en prijsstelling van de virtuele machine die u besluit te voorzien voor SQL Server, aangezien u meer RAM kunt krijgen tegen dezelfde uurkosten. De twee beste keuzes vanuit prestatieperspectief zijn de D13 of D14 Standard virtuele machines.

De vooraf geconfigureerde SQL Server 2014-instanties uit de Azure-galerij kunnen u veel geld besparen op de licentiekosten voor SQL Server, en veel van het benodigde configuratiewerk is al voltooid in de basisinstallatiekopie. U moet nog steeds naar binnen gaan en een paar laatste configuratiewijzigingen aanbrengen op basis van uw voorkeur en werklast. Ten slotte moet u de tijd nemen om enkele prestatiebenchmarks op uw virtuele machine uit te voeren, zodat u het prestatieniveau begrijpt dat deze kan leveren.


  1. Welk SqlDbType verwijst naar varBinary(max)?

  2. PostgreSQL versus MySQL

  3. Hoe te groeperen op twee kolommen in SQL

  4. Problemen met de postgresql COPY-opdracht met Rails op een andere server