Perché l'aggiunta dell'utente di SQL Server a "Esegui attività di manutenzione del volume" migliora così tanto la velocità del ridimensionamento del database?


17

Se voglio creare un database da 5 GB con

CREATE DATABASE [test]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)

ci vuole 1 minuto sul mio SSD.

Ma quando aggiungo l'utente di SQL Server a Perform volume maintenance tasks

inserisci qui la descrizione dell'immagine

ci vogliono solo 1-2 secondi .

Perché? Qualcuno può spiegarmi quali sono le ragioni di questo?


4
I downvoter possono spiegare perché i downvotes ?? Questa mi sembra una bella domanda.
Thomas Stringer,

Risposte:


26

Ciò è dovuto all'inizializzazione dei file istantanei . In breve, SQL Server può sfruttare questo privilegio per i file di dati del database (non i file di registro delle transazioni). Ciò significa che SQL Server non deve azzerare i file di dati durante l'inizializzazione.

Senza il privilegio "Esegui attività di manutenzione volume" concesso all'account del servizio SQL, al momento della creazione del database SQL Server deve azzerare "test.mdf" e "test_log.ldf".

Con il set di autorizzazioni "Esegui attività di manutenzione volume" , SQL Server deve solo azzerare "test_log.ldf". Un sovraccarico significativamente inferiore, quindi durata del CREATE DATABASEtest ridotta al minimo .

Riferimenti
Come e perché abilitare l'inizializzazione istantanea dei file Inizializzazione
istantanea - Cosa, perché e come?


questa cucitura che è caratteristica è fantastica, ma perché l'impostazione predefinita è disattivata?
ahmed abdelqader,

1

Ciò non influirà sui file .ldf (file di registro), almeno non in base all'articolo MS

Perché farlo Velocità

Perché NON farlo? Possibile rischio per la sicurezza. Qualcuno potrebbe hackerare la tua casella e possibilmente leggere gli spazi di memoria diversi da zero e recuperare quei dati. Piccolo rischio, ma ancora un rischio. Questo è il motivo per cui non è abilitato per impostazione predefinita.

Spiegazione dettagliata: come e perché abilitare l'inizializzazione del file istantaneo


Nota per il lettore: se sei preoccupato per le persone che eseguono l'hacking nel tuo server e leggono i vecchi dati dal file eliminato, lasciare IFI disattivato può essere utile, ma non è certo quello che considererei sufficiente. E, se hai un software che sovrascrive già i file cancellati, probabilmente saresti OK per attivare l'IFI, poiché quel software avrebbe già azzerato lo spazio.
RDFozz,

Ora c'è una casella di spunta durante l'installazione (da SQL 2016 in poi) per concedere questo diritto all'account del servizio SQL Server, quindi immagino che anche MS sia un po 'più rilassato sul fronte della sicurezza.
Gareth Lyons,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.