Använd AWE minne i SQL Server 2000
Förord
I de flesta SQL Servrarna så orsakas flest flaskhalsar i prestandan utav I/O. Det låter mycket rimligt på grund av två anledningar. För det första så är ju syftet med en databas att lagra data, och data lagras på diskarrayer, vilket gör att det krävs I/O för att hämta data från diskarrayen innan de placeras i RAMen för att användas. För det andra så är diskaccessen den långsammaste komponenten i vilken SQL Server som helst. Om man kombinerar dessa två faktorer så kan de bidra till en mycket vanlig flaskhals.Använd AWE Memory i SQL Server 2000
av Brad M. McGee
För att hjälpa till att reducera I/O flaskhalsar så inkluderar SQL Server en så kallad Buffer Cache. Den här cachen är lokaliserad i RAM minnet, och används till att lagra de SQL Server data som senast blivit accessade. Genom att lagra data i cachen så behöver inte SQL Servern komma åt disk I/O lika ofta, vilket höjer SQL Servern prestanda i det stora hela.
Som du kanske kan förstå så fungerar det så att ju större en Buffer Cache är, desto mer data kan du lagra i RAM minnet och desto mindre I/O access krävs det. I en idealisk värld skulle all data från databasen lagras i en Buffer Cache, vilket skulle reducera mängden disk I/O och höja prestanda markant. I vissa fall är det här möjligt, men i de flesta fall är det inte möjligt.
För en idealisk prestanda bör Buffer Cachens träffkvot (mängden data i RAM minnet som återanvänds) ligga på minst 90 %. Om det gör det så innebär det att överdriven disk I/O generellt sett undviks, vilket höjer prestandan. Men om Buffer Cachens träffkvot understiger 90 % så kan disk I/O komma att bli en allvarlig flaskhals.
Det lättaste sättet att höja Buffer Cachens träffkvot i SQL Server är genom att lägga till extra fysisk RAM till Servern. Om vi antar att du inte har ändrat standardminnets konfigurationsinställningar i SQL Server så kommer SQL Server automatiskt att använda så mycket RAM minne som du lägger till.
Som du förmodligen redan vet så är Windows 2000 ett 32-bitars operativsystem. Det innebär att det som standard kan stöda upp till 4 GB minne (2 GB för operativsystemet och 2 GB för användarapplikationerna). Generellt sett innebär det att SQL Server är begränsad till 2 GB RAM. I de flesta fall så är det mer än nog RAM till SQL Server.
Eftersom många databaser i SQL Server är enorma, vissa långt över 2 GB, så krävs det mer än 2 GB RAM för att kunna hålla Buffer Cachens träffkvot på 90 % eller mer. På grund av det här problemet, så stöder Windows 2000 och SQL Server 2000 en funktion som kallas AWE, ”Address Windowing Extensions”. AWE är ett sätt för SQL Server 2000 att kunna komma åt mer än 2 GB i minne.
AWE låter SQL Server 2000 att komma åt upp till 64 GB RAM
Microsoft anser att AWE är en första klassens funktion, vilket har lett till att funktionen inte finns med i alla versioner av Windows 2000 eller SQL Server 2000. Nedan ser du en tabell på vilka versioner av Windows 2000 och SQL Server 2000 som stöder AWE:De kombinationer ovan som ligger på 4 GB eller mer stöds via AWE minnet. Så om du vill utnyttja AWE minnet så har du inget annat val än att införskaffa Microsofts förstklassiga mjukvara.
Hur är det med Windows NT 4.0 Enterprise Edition?
Om du kör Windows NT 4.0 Enterprise Edition så kan du inte dra fördel av AWE minnet. Om du däremot kör SQL Server 7.0 Enterprise Edition eller SQL Server 2000 Enterprise Edition, så kan du konfigurera SQL Servern till att komma åt 3 GB RAM, istället för de vanliga 2 GB. Du gör det genom att lägga till växeln ’/3GB’ på Bootraden i boot.ini filen. När du har gjort det så startar du om datorn, och sedan kan SQL Server automatiskt komma åt 3 GB RAM. Det behövs inte någon särskild konfigurering.
Samma sak gäller om du skriver in växeln ’/3GB’ i boot.ini filen då du använder SQL Server 2000 Enterprise Edition och Windows 2000 för att komma åt 3 GB RAM.
Hur du implementerar AWE minne
För att kunna utnyttja AWE minnet så måste du konfigurera både Windows 2000 och SQL Server.Hur du konfigurerar Windows 2000 till att använda AWE minne
Exakt hur du ska konfigurera AWE Memory Support beror på hur mycket RAM minne din Server redan har. Det du i alla fall först måste göra när du ska konfigurera Windows 2000, är att du måste skriva in någon av följande växlar på Bootraden i boo.ini filen, och sedan starta om datorn:
- 4 GB RAM: /3GB (AWE stödet används inte)
- 8 GB RAM: /3GB /PAE
- 16 GB RAM: /3GB /PAE
- 16 GB+ RAM: /PAE
Växeln ’/3GB’ används till att tala om för SQL Server att den ska utnyttja 3 GB av de 4 GB som Windows 2000 normalt stöder. Om du inte anger det här alternativet, så kommer SQL Server bara att dra fördel av de första 2 GB av de 4 GB i Servern, och praktiskt taget slösa bort 1 GB RAM.
Teknologin AWE Memory används endast till RAM som överskrider de vanliga 4 GB, det är därför som växeln ’/3GB’ behövs för att kunna använda så mycket av RAM minnet i din Server som möjligt. Om din Server har 16 GB RAM eller mindre så är den växeln viktig, men om din Server har mer än 16 GB RAM så får du inte använda växeln alls. Därför att de extra 1 GB som ges när du använder växeln, behövs till operativsystemet för att kunna dra fördel av allt extra AWE minne. Med andra ord så behöver operativsystemet själv 2 GB RAM för att kunna hantera AWE minnet, då du har 16 GB RAM eller mer i din Server. Om Servern har 16 GB RAM eller mindre, så behöver operativsystemet bara 1 GB RAM, och de extra 1 GB RAM kan då användas till SQL Server.
Hur du konfigurerar SQL Server 2000 till att använda AWE minne
Medan Windows 2000 redan känner till AWE minnet, så kan inte SQL Server 2000 använda det förrän man har konfigurerat den korrekt. Huvudsakligen görs detta genom en tvåstegs-process:
- AWE stödet måste aktiveras
För att aktivera AWE minne på en SQL Server så kör du följande kommandon:
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO
Eftersom ‘awe enabled’ är en avancerad funktion så måste du först köra ’show advanced options’ funktionen, för att tillåta att avancerade funktioner ska få köras. - Man kan behöva konfigurera Maximum Memory
AWE minnet kan inte skötas dynamiskt, såsom minnet normalt sköts i SQL Server. Det innebär att när man kör igång SQL Server, så kommer SQL Server automatiskt att greppa allt RAM minne den kommer åt (förutom de 128 MB RAM som är reserverade åt operativsystemet), och den kommer inte att släppa något av RAM minnet förrän SQL Server stängs ned. Om din Server endast är till för SQL Server så behöver det inte vara några problem. Men om du kör fler mjukvaror på Servern, eller om du kör flera instanser av SQL Server på den, så bör du ange hur mycket RAM minne SQL Servern maximalt får ta, då den kör igång. Det kan du göra genom att använda konfigurationsalternativet ”max Server Memory”. För att inställningarna ska aktiveras när du har ändrat dem, så måste du först stoppa mssqlserver tjänsten, och sedan starta den igen. Trots att du kan köra flera instanser av SQL Server som använder AWE Memory, så är det inget du bör göra eftersom hanteringen av detta kan ge dig huvudvärk. Faktum är att om du kör flera instanser av SQL Server som använder AWE minne, så förstör det lite av syftet med mer RAM minne i första taget. Det du vill uppnå med att använda AWE minne är ju att stöda en singel, mycket stor instans av SQL Server, inte flera små instanser som körs på en enda Server.
Säkerhetsnotering: För att kunna använda AWE minnet, så måste du köra mssqlserver tjänsten i SQL Server 2000 under ett Windows 2000 konto, vilket har blivit tilldelat Windows 2000 rättigheten ”lock pages in memory” (lås sidor i minnet). SQL Server Setup kommer sedan automatiskt att godkänna mssqlserver-tjänstens kontorättighet att använda ”Lock Pages in Memory” alternativet. Om du startar en instans av SQL Server från kommandoprompten med hjälp av sqlservr.exe, så måste du manuellt tilldela rättigheten till det interaktiva användarkontot med hjälp av Windows 2000 verktyget Group Policy, annars kommer SQL Server inte att kunna använda AWE minnet då det körs från kommandoprompten.
Clustering notering: Om du clustrar SQL Servrar som använder AWE minne, så är det viktigt att alla Servrar i clustret har lika mycket RAM att tillgå. De måste ha samma minneskonfigurationer, annars kan det fallera vid överflyttning av data.
Om du har lyckats aktivera AWE minnet, så kommer ”Address Windowing Extensions aktiverad” att skrivas in i Errorloggen varje gång som SQL Server 2000 startar.
Hur du använder AWE Memory
När Windows 2000 och SQL Server 2000 väl är korrekt konfigurerade, så är du nu redo att utnyttja fördelarna av ditt extra RAM minne. Om du precis har lagt till extra RAM minne till en ny SQL Server, så bör du kolla Buffer Cachens träffkvot för att se hur effektiva de extra RAMen är för din Server. Om du fortfarande inte får en träffkvot på över 90 % efter att ha lagt till de extra RAM minnena, så bör du överväga att antingen lägga till ännu mer RAM minne eller att designa om din databas till att bli mer effektiv. Precis efter att du först har konfigurerat AWE minnet, så bör du även hålla noga uppsikt över pagingen på Servern. Därför att, som jag sa förut, SQL Server sköter inte AWE minnet dynamiskt. Om du märker att pagingen börjar bli ett problem, så kan du behöva sänka ”max Server Memory” inställningarna för hur mycket RAM som SQL Server får accessa. Du kommer säkerligen att få experimentera mycket för att finna den idealiska maximala mängden RAM som din SQL Server får accessa. Paging borde virtuellt sett inte existera i en väloptimerad SQL Server.
Om du har fler frågor om AWE minne så kan du titta in på
0 Kommentarer