Mengapa menambahkan pengguna SQL Server ke "Lakukan tugas perawatan volume" meningkatkan kecepatan mengubah ukuran basis data begitu banyak?

17

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

masukkan deskripsi gambar di sini

hanya perlu 1-2 detik .

Mengapa demikian? Bisakah seseorang menjelaskan kepada saya apa alasannya?

Nikolay Kostov
sumber
4
Bisakah para downvoter menjelaskan mengapa downvote ?? Ini sepertinya pertanyaan yang bagus untuk saya.
Thomas Stringer

Jawaban:

26

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 DATABASEdalam pengujian Anda.

Referensi
Bagaimana dan Mengapa Mengaktifkan Inisialisasi File Instan
Instan Inisialisasi Instan - Apa, Mengapa dan Bagaimana?

Thomas Stringer
sumber
fitur jahitan ini luar biasa, tapi mengapa defaultnya mati?
ahmed abdelqader
1

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

Robert Lee
sumber
Catatan untuk pembaca: Jika Anda khawatir tentang orang yang meretas ke server Anda dan membaca data lama dari file yang dihapus, meninggalkan IFI mungkin membantu, tapi itu tidak cukup menurut saya. Dan, jika Anda memiliki perangkat lunak yang sudah menimpa file yang sudah dihapus, maka Anda mungkin akan baik-baik saja untuk mengaktifkan IFI, karena perangkat lunak itu seharusnya sudah memusatkan ruang.
RDFozz
Sekarang ada kotak centang saat instalasi (SQL 2016 dan seterusnya) untuk memberikan hak ini ke akun layanan SQL Server jadi saya kira MS sedikit lebih santai di bagian keamanan juga.
Gareth Lyons