Jika saya ingin membuat database 5GB dengan
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%)
dibutuhkan 1 menit pada SSD saya.
Tetapi ketika saya menambahkan pengguna SQL Server Perform volume maintenance tasks
hanya perlu 1-2 detik .
Mengapa demikian? Bisakah seseorang menjelaskan kepada saya apa alasannya?
sql-server
performance
Nikolay Kostov
sumber
sumber
Jawaban:
Itu karena Inisialisasi File Instan . Singkatnya, SQL Server dapat memanfaatkan hak istimewa ini untuk file data database (bukan file log transaksi). Apa artinya ini adalah bahwa SQL Server tidak harus nol file data saat inisialisasi.
Tanpa hak istimewa "Lakukan tugas perawatan volume" yang diberikan ke akun Layanan SQL, setelah pembuatan basis data, SQL Server harus membatalkan "test.mdf" dan "test_log.ldf".
Dengan izin hak istimewa "Lakukan tugas perawatan volume" , SQL Server hanya perlu memberi nol "test_log.ldf". Overhead yang jauh lebih sedikit, karenanya meminimalkan durasi untuk
CREATE DATABASE
dalam pengujian Anda.Referensi
Bagaimana dan Mengapa Mengaktifkan Inisialisasi File Instan
Instan Inisialisasi Instan - Apa, Mengapa dan Bagaimana?
sumber
Ini tidak akan mempengaruhi file .ldf (file log), setidaknya tidak sesuai dengan Artikel MS
Kenapa melakukannya? Kecepatan
Kenapa TIDAK? Kemungkinan risiko keamanan. Seseorang dapat meretas ke dalam kotak Anda dan mungkin membaca ruang memori yang bukan nol dan mengambil data itu. Risiko kecil, tetapi masih berisiko. Inilah mengapa itu tidak diaktifkan secara default.
Penjelasan terperinci: Bagaimana dan Mengapa Mengaktifkan Inisialisasi File Instan
sumber