Overwegingen voor de instellingen voor automatisch vergroten en automatisch maken in SQL Server
Oorspronkelijke productversie: SQL Server
Oorspronkelijk KB-nummer: 315512
Samenvatting
De standaardinstellingen voor automatisch groeien en automatisch maken zijn geschikt voor veel SQL Server-systemen. Er zijn echter omgevingen waarin u mogelijk de parameters voor automatisch vergroten of verkleinen moet aanpassen. Dit artikel bevat achtergrondinformatie die u helpt bij het selecteren van deze instellingen voor uw omgeving.
Hier volgen enkele dingen die u moet overwegen als u besluit om uw parameters voor automatisch groeien en automatisch vergroten af te stemmen.
Hoe kan ik de instellingen configureren
U kunt de instellingen voor automatisch groeien en automatisch terugschalen configureren of wijzigen met behulp van een van de volgende opties:
Een
ALTER DATABASE
instructie- Opties voor bestands- en bestandsgroepen gebruiken om instellingen voor automatische groei te wijzigen
- Gebruik SET-opties om instellingen te configureren
AUTO_SHRINK
.
Notitie
Zie Gegevens of logboekbestanden toevoegen aan een database voor meer informatie over het instellen van deze instellingen op databasebestandsniveau.
U kunt ook de optie voor automatisch vergroten configureren wanneer u een database maakt.
Voer de volgende Transact-SQL-opdracht uit om de huidige instellingen weer te geven:
sp_helpdb [ [ @dbname= ] 'name' ]
Houd er rekening mee dat de instellingen voor automatisch groeien per bestand zijn. Daarom moet u ze op ten minste twee plaatsen instellen voor elke database (één voor het primaire gegevensbestand en één voor het primaire logboekbestand). Als u meerdere gegevens en/of logboekbestanden hebt, moet u de opties voor elk bestand instellen. Afhankelijk van uw omgeving kunt u eindigen met verschillende instellingen voor elk databasebestand.
Overwegingen voor AUTO_SHRINK
AUTO_SHRINK
is een databaseoptie in SQL Server. Wanneer u deze optie inschakelt voor een database, komt deze database in aanmerking voor verkleining door een achtergrondtaak. Deze achtergrondtaak evalueert alle databases die voldoen aan de criteria voor het verkleinen en verkleinen van de gegevens of logboekbestanden.
U moet deze optie zorgvuldig evalueren voor de databases in een SQL Server-exemplaar. Frequente groei- en verkleinbewerkingen kunnen leiden tot verschillende prestatieproblemen.
Als meerdere databases frequente verkleinings- en groeibewerkingen ondergaan, leidt dit eenvoudig tot fragmentatie op bestandssysteemniveau. Dit kan ernstige gevolgen hebben voor de prestaties. Dit geldt ongeacht of u de automatische instellingen gebruikt of dat u de bestanden handmatig vergroot en verkleint.
Nadat
AUTO_SHRINK
de gegevens of het logboekbestand zijn verkleind, kan een volgende DML- of DDL-bewerking aanzienlijk vertragen als er ruimte is vereist en de bestanden moeten groeien.De
AUTO_SHRINK
achtergrondtaak kan resources in beslag nemen wanneer er veel databases zijn die moeten worden verkleind.De
AUTO_SHRINK
achtergrondtaak moet vergrendelingen en andere synchronisatie verkrijgen die kunnen conflicteren met andere reguliere toepassingsactiviteiten.
U kunt databases instellen op een vereiste grootte en ze vooraf vergroten. Laat de ongebruikte ruimte in de databasebestanden staan als u denkt dat de gebruikspatronen van de toepassing deze opnieuw nodig hebben. Dit kan voorkomen dat de databasebestanden regelmatig worden verkleind en groeit.
Overwegingen voor AUTOGROW
Als u een transactie uitvoert waarvoor meer logboekruimte is vereist dan beschikbaar is en u de optie voor automatische groei voor het transactielogboek van die database hebt ingeschakeld, bevat de tijd die nodig is om de transactie te voltooien de tijd die nodig is om het transactielogboek te laten groeien met het geconfigureerde bedrag. Als de toename van de groei groot is of er een andere factor is die ervoor zorgt dat het lang duurt, kan de query waarin u de transactie opent mislukken vanwege een time-outfout. Hetzelfde soort probleem kan het gevolg zijn van een automatische groei van het gegevensgedeelte van uw database.
Als u een grote transactie uitvoert waarvoor het logboek moet worden uitgebreid, moeten andere transacties waarvoor een schrijfbewerking naar het transactielogboek is vereist, ook wachten totdat de groeibewerking is voltooid.
Als u veel bestandsgroei in uw logboekbestanden hebt, hebt u mogelijk een overmatig groot aantal virtuele logboekbestanden (VLF). Dit kan leiden tot prestatieproblemen met opstart-/onlinebewerkingen van databases, replicatie, spiegeling en wijziging van gegevensopname (CDC). Daarnaast kan dit soms prestatieproblemen veroorzaken met gegevenswijzigingen.
Notitie
Als u de opties voor automatisch vergroten en automatisch maken combineert, kunt u onnodige overhead creëren. Zorg ervoor dat de drempelwaarden die de groei- en verkleiningsbewerkingen activeren, geen frequente wijzigingen in de grootte van omhoog en omlaag veroorzaken. U kunt bijvoorbeeld een transactie uitvoeren die ervoor zorgt dat het transactielogboek met 100 MB toeneemt op het moment dat het wordt doorgevoerd. Enige tijd daarna wordt het transactielogboek met 100 MB gestart en verkleind. Vervolgens voert u dezelfde transactie uit en wordt het transactielogboek opnieuw met 100 MB vergroot. In dat voorbeeld maakt u onnodige overhead en maakt u mogelijk fragmentatie van het logboekbestand, die beide een negatieve invloed kunnen hebben op de prestaties.
Als u uw database met kleine stappen vergroot of als u deze vergroot en vervolgens verkleint, kunt u uiteindelijk schijffragmentatie gebruiken. Schijffragmentatie kan in sommige gevallen prestatieproblemen veroorzaken. Een scenario met kleine groeiverhogingen kan ook de prestaties van uw systeem verminderen.
In SQL Server kunt u direct initialiseren van bestanden inschakelen. Met direct initialiseren van bestanden worden bestandstoewijzingen alleen versneld voor gegevensbestanden. Initialisatie van direct bestand is niet van toepassing op logboekbestanden. Zie Initialisatie van database direct bestand voor meer informatie.
Aanbevolen procedures voor automatisch groeien en automatisch ontgroeien
Voor een beheerd productiesysteem moet u overwegen om automatisch te groeien als een onvoorziene gebeurtenis voor onverwachte groei. Beheer uw gegevens en logboekgroei niet op dagelijkse basis met automatische groei.
U kunt waarschuwingen of bewakingsprogramma's gebruiken om de bestandsgrootten te bewaken en bestanden proactief te laten groeien. Zo voorkomt u fragmentatie en kunt u deze onderhoudsactiviteiten naar niet-piekuren verplaatsen.
Autoshrink en automatische groei moeten zorgvuldig worden geëvalueerd door een getrainde databasebeheerder (DBA); Ze mogen niet onbeheerd blijven.
Uw toename van automatische groei moet groot genoeg zijn om de prestatiestraffen in de vorige sectie te voorkomen. De exacte waarde die u moet gebruiken in uw configuratie-instelling en de keuze tussen een groeipercentage en een specifieke MB-groottegroei, is afhankelijk van veel factoren in uw omgeving. Een algemene vuistregel die u kunt gebruiken voor het testen, is het instellen van uw instelling voor automatisch groeien op ongeveer acht de grootte van het bestand.
Schakel de
\<MAXSIZE>
instelling voor elk bestand in om te voorkomen dat een bestand groeit naar een punt waar alle beschikbare schijfruimte wordt gebruikt.Houd de grootte van uw transacties zo klein mogelijk om ongeplande bestandsgroei te voorkomen.
Waarom moet ik me zorgen maken over schijfruimte als de grootte-instellingen automatisch worden beheerd
De instelling voor automatische groei kan de databasegrootte niet groter maken dan de limieten van de beschikbare schijfruimte op de stations waarvoor bestanden worden gedefinieerd. Als u daarom afhankelijk bent van de functionaliteit voor automatisch vergroten van de grootte van uw databases, moet u de beschikbare schijfruimte nog steeds onafhankelijk controleren. De instelling voor automatisch groeien wordt ook beperkt door de
MAXSIZE
parameter die u voor elk bestand selecteert. Als u de kans wilt verkleinen dat er onvoldoende ruimte beschikbaar is, kunt u de PRESTATIEmeteritem SQL Server: Databases-object: Grootte(s) van gegevensbestanden (KB) controleren en een waarschuwing instellen wanneer de database een bepaalde grootte bereikt.Ongeplande groei van gegevens of logboekbestanden kan ruimte in beslag nemen die andere toepassingen verwachten beschikbaar te zijn en kunnen ervoor zorgen dat deze andere toepassingen problemen ondervinden.
De groeiverhoging van uw transactielogboek moet groot genoeg zijn om te blijven voldoen aan de behoeften van uw transactie-eenheden. Zelfs als automatische groei is ingeschakeld, kunt u een bericht ontvangen dat het transactielogboek vol is, als het niet snel genoeg kan groeien om aan de behoeften van uw query te voldoen.
SQL Server test niet voortdurend op databases die de geconfigureerde drempelwaarde voor autoshrink hebben bereikt. In plaats daarvan wordt gekeken naar de beschikbare databases en wordt de eerste gevonden die is geconfigureerd voor automatisch zoeken. De database wordt gecontroleerd en de database wordt zo nodig verkleind. Vervolgens wacht het enkele minuten voordat de volgende database wordt gecontroleerd die is geconfigureerd voor autoshrink. Met andere woorden, SQL Server controleert niet alle databases tegelijk en verkleint ze allemaal tegelijk. Het werkt op een round robin-manier door de databases om de belasting gedurende een bepaalde periode te stagneren. Afhankelijk van het aantal databases dat u voor een bepaald SQL Server-exemplaar hebt geconfigureerd, kan het daarom enkele uren duren voordat de database de drempelwaarde bereikt totdat deze daadwerkelijk wordt verkleind.
Verwijzingen
Troubleshoot a Full Transaction Log (SQL Server Error 9002) (Problemen met een vol transactielogboek oplossen (SQL Server-fout 9002))
Architectuur en beheerhandleiding voor SQL Server-transactielogboeken