Seberapa pentingkah VLF ketika mempertimbangkan kinerja database? Apa yang akan menggambarkan situasi optimal untuk VLF?
Seberapa pentingkah VLF ketika mempertimbangkan kinerja database? Apa yang akan menggambarkan situasi optimal untuk VLF?
Jawaban:
Apa itu file log virtual?
SQL Server membagi file log transaksi untuk setiap database menjadi potongan yang lebih kecil, yang disebut 'file log virtual' (atau singkatnya VLF). Fungsi utama mereka adalah sebagai penanda pemotongan pada cadangan log, yaitu SQL Server hanya akan menghapus (dan menandai tersedia untuk digunakan kembali) VLF yang benar-benar kosong. MSDN memiliki bagian tentang Log Transaksi - Arsitektur Fisik .
Apa yang menentukan jumlah VLF?
Setiap kali file log tumbuh (baik melalui autogrowth atau pertumbuhan manual), bagian baru dari file log dibagi menjadi sejumlah VLF, murni berdasarkan pada ukuran bagian baru (log transaksi yang ada dibiarkan sendiri). Jadi, pengaturan autogrowth kecil (yaitu autogrowth 10% yang merupakan default) akan menyebabkan sejumlah besar VLF dibuat.
Apa implikasi dari sejumlah besar VLF?
Masalah utama sejumlah besar penyebab VLF adalah:
DBCC
karena mereka menggunakan snapshot basis data di latar belakang untuk memfasilitasi pemeriksaan konsistensi tanpa memblokir).Bagaimana saya bisa mengetahui berapa banyak VLF yang dimiliki database saya?
DBCC LOGINFO
akan mengembalikan 1 baris untuk setiap VLF dalam log transaksi basis data Anda. Pertanyaan ini memiliki beberapa skrip yang berguna untuk menerapkannya di semua database di server.
Berapa VLF terlalu banyak?
Itu panggilan penilaian yang harus Anda buat sendiri. Aturan pribadi saya adalah bahwa di bawah 50 tidak layak untuk dipermainkan, dan lebih dari 100 (atau lebih) dan saya memperbaiki pengaturan autogrowth dan membuat catatan mental untuk (di jendela pemeliharaan berikutnya) menyusut dan menumbuhkan kembali log (seperti di bawah) .
Tolong! Saya memiliki sebelas miliar VLF dan pemulihan basis data saya berlangsung sepanjang hari!
Garis pendek (dari blog Kimberly Tripp ):
BACKUP LOG
)DBCC SHRINKFILE
dengan TRUNCATEONLY
mengecilkan file log ke ukuran sekecil mungkin.ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize
untuk mengubah ukuran log transaksi Anda kembali dalam satu langkah **.** Catatan - jika Anda memiliki file log yang sangat besar (puluhan GB atau lebih), Anda mungkin ingin mengubah ukuran dalam beberapa langkah untuk mendapatkan jumlah VLF yang sesuai dengan ukuran yang sesuai untuk menghindari pencadangan log yang terlalu tebal. Karena VLF adalah unit pemotongan, mereka juga menentukan ukuran cadangan log, sebagaimana dirinci dalam blog Kim .