En fråga som dyker upp ganska ofta är hur man avgör hur mycket fysiskt RAM-minne som ska finnas i en databasserver som kör SQL Server 2012. En av de första uppgifterna du behöver för att avgöra detta är vilken version och upplaga av SQL Server du kommer att köra på din nya server.
Olika versioner och utgåvor av 64-bitars SQL Server har olika licensgränser för hur mycket fysiskt RAM de kan använda för olika ändamål, som visas i Tabell 1.
Version | Utgåva | Motorgräns | SSAS-gräns |
---|---|---|---|
SQL Server 2008 | Standard | OS-gräns | OS-gräns |
Företag | OS-gräns | OS-gräns | |
SQL Server 2008 R2 | Standard | 64 GB | 64 GB |
Företag | 2 TB | 2 TB | |
Datacenter | OS-gräns | OS-gräns | |
SQL Server 2012 | Standard | 64 GB | 64 GB |
Business Intelligence | 64 GB | OS-gräns | |
Företag | OS-gräns | OS-gräns |
Tabell 1:SQL Server RAM-gränser efter version och upplaga
Som du kan se från tabell 1 kan SQL Server 2008 använda upp till operativsystemgränsen för fysiskt RAM-minne för både Standard- och Enterprise Editions. När Microsoft släppte SQL Server 2008 R2 hade de den dåliga idén (enligt min mening) att införa lägre fysiska RAM-gränser för både Standard- och Enterprise Editions. De introducerade också en ny Data Center Edition av SQL Server 2008 R2, som hade den gamla, välbekanta operativsystemgränsen som licensgräns för fysiskt RAM.
SQL Server 2012 Minnesgränser
När Microsoft släppte SQL Server 2012 blev de klokt nog av med Data Center Edition SKU, men de behöll samma konstgjorda låga 64GB RAM-gräns för Standard Edition. Jag har skrivit länge om varför detta är en dålig idé, så jag kommer inte att sammanfatta dessa argument igen här. Det räcker med att säga att det är lite löjligt att begränsas till att använda mindre än $800,00 värde av DDR3 ECC RAM (64GB gånger $12/GB) i en ny två-socket server som kan ha kostat omkring $10-$15K för själva servern , plus cirka 29 000 USD för sexton SQL Server 2012 Standard Edition Core-licenser, för att inte tala om dina lagringskostnader.
Hittills finns det inget som tyder på att Microsoft har för avsikt att ändra denna RAM-gräns för SQL Server 2014, så vi kanske bara måste fortsätta att hantera det. En liten positiv aspekt av denna RAM-gräns är att den är per SQL Server-instans, inte per server. Det betyder att du, med lite eftertanke och planering, kan bestämma dig för att installera två eller tre SQL Server 2012 Standard Edition-instanser på samma fysiska maskin för att dra nytta av maskinens alla minnes-, processor- och lagringsresurser, om du är villig. för att hantera extra resursanvändning och hanteringskostnader för namngivna instanser. Detta kan spara en betydande summa pengar i hårdvara och licensieringskostnader för SQL Server 2012 jämfört med att ha två eller tre separata servrar.
Om du bestämmer dig för att bara hålla dig till en enda standardinstans av SQL Server 2012 Standard Edition (vilket jag föredrar om jag är begränsad till Standard Edition), ska du bara skaffa 64 GB RAM för databasservern? Jag tror att svaret är ett bestämt nej!
SQL Server 2012 Standard Edition minneskonfigurationsexempel
Sedan serverklass är DDR3 ECC RAM så prisvärt; Jag tror att en rimlig minsta mängd RAM-minne för en ny server med två sockel är närmare 96 GB RAM. Detta låter dig ställa in inställningen för maxserverminne på instansnivå till 65536 MB, vilket är exakt 64 GB RAM, samtidigt som du lämnar mycket överflödigt RAM-minne för operativsystemet och andra applikationer som kan köras på din databasserver.
De stora serverleverantörerna har dokumentation och online-minneskonfigurationsverktyg som hjälper till att se till att du får den bästa möjliga minneskonfigurationen för en önskad mängd fysiskt minne. Du kan också använda ett verktyg som CPU-Z för att kontrollera din systemminneshastighet för att se till att den körs med den hastighet du förväntar dig.
Till exempel har Dell ett onlinekonfigurationsverktyg här. Det här verktyget låter dig välja vilken Dell-servermodell du vill ha, inklusive vilken processorfamilj du kommer att använda (när du har ett val) och antalet fysiska processorer som faktiskt kommer att finnas i servern. Sedan anger du hur mycket fysiskt RAM-minne du vill ha i servern, och väljer dina önskade minnestillförlitlighetsalternativ (som minnesspegling, ranksparing etc.), och sedan kommer verktyget med tre olika möjliga minneskonfigurationer:Nominell konfiguration, Maximal prestanda och balanserad konfiguration. Dessa konfigurationer visar typ, antal och storlek på minnesmodulerna du ska använda, och vilka minneskanaler och kortplatser du bör fylla i för att uppfylla det valda konfigurationsalternativet.
Om du väljer en Dell PowerEdge R720 server med två sockel, med två av de nya 22nm Intel Xeon E5-2600 v2 (Ivy Bridge-EP)-processorerna och du väljer 96 GB RAM utan andra alternativ för minnessäkerhet, får du tre föreslagna minne konfigurationsalternativ. Alternativet Maximal performance föreslår tolv, 8GB 1866MHz 1R x4 RDIMM, med plats 0 på kanalerna 1-4 fyllda och plats 1 på kanalerna 1-2 fyllda för varje processor. Detta ger dig en systemminneshastighet på 1866 MHz, vilket är det maximala stödet av den nya Intel Xeon E5-2600 v2-serien av processorer.
Förresten, om du ska använda SQL Server 2012 Standard Edition, är den exakta processorn du vill ha i en Dell R720 Intel Xeon E5-2667 v2, som har åtta fysiska kärnor med en basklockhastighet på 3,3 GHz. Att ha en modell med högre antal kärnor skulle köra in i licensgränsen på 16 fysiska kärnor för SQL Server 2012 Standard Edition.
Alternativet Balanserad konfiguration föreslår tolv, 8GB 1600MHz 1R x4 RDIMM, med plats 0 på kanalerna 1-4 fyllda och plats 1 på kanalerna 1-2 fyllda för varje processor. Detta ger dig en systemminneshastighet på 1600MHz, vilket kommer att använda något mindre ström än alternativet Maximal prestanda.
Alternativet Nominell konfiguration föreslår tjugofyra, 4GB 1333MHz 1R x8 RDIMMs med alla kortplatser på alla kanaler fyllda för varje processor. Detta ger dig en systemminneshastighet på 1333MHz, med alla dina kortplatser fyllda med ganska små 4GB RDIMM. Detta är ett mindre än optimalt val som är utformat för att spara lite pengar på minneskostnader genom att använda DIMM med mindre kapacitet och lägre hastighet. Tyvärr finns det få verkliga ekonomiska besparingar här, till en kostnad av att ge upp en anständig mängd minnesprestanda och inte ha några tomma minnesplatser.
Med Intel Xeon E5-2600 och E5-2600 v2-seriens processorer får du högsta möjliga minnesbandbredd om du bara fyller i en eller två platser per minneskanal. Att fylla på den tredje minnesplatsen orsakar en minskning av systemets minneshastighet. Den högsta mängden minne du kan använda vid maximal systemminneshastighet med ekonomiska 16 GB RDIMM är 256 GB, vilket skulle vara sexton, 16 GB RDIMM, som fyller alla platser på kanal 1 och 2. Det finns ingen fördel med systemminneshastigheten med att ha mindre än 256 GB RAM i en server med två sockel med två processorer i Xeon E5-2600 eller E5-2600 v2-serien.
Även om det är bättre att försöka komma på en minneskonfiguration som ger högsta möjliga systemminneshastighet för en given mängd RAM, enligt min erfarenhet (och i de flesta faktiska applikationsriktmärken som jag har sett), den verkliga prestandaskillnaden mellan olika systemminneshastigheter är mycket mindre än du kan förvänta dig, ganska ofta i intervallet 5-10 % eller mindre. För SQL Server Enterprise Edition-användning skulle jag hellre ha tillräckligt med RAM-minne för att passa hela min arbetsbelastning i buffertpoolen istället för att välja en lägre mängd RAM-minne för att få högsta möjliga minneshastighet till priset av att behöva dra data från lagringsundersystemet mer ofta. Även "långsamt" RAM har storleksordningar mindre latens än någon typ av lagringsundersystem, inklusive flashbaserad lagring.
Om min arbetsbelastning inte fick plats i 256 GB RAM-minne, skulle jag hellre lägga till mer RAM-minne och ta systemminneshastigheten i stället för att behöva komma åt det mycket långsammare lagringsundersystemet oftare. Så för att sammanfatta tror jag att minnesplatsen för SQL Server 2012 Standard Edition för den här typen av server är 96 GB och stiger till 256 GB för SQL Server 2012 Enterprise Edition (såvida inte din arbetsbelastning är större än 256 GB).