MSSQLSERVER_9017
Berlaku untuk: SQL Server
Detail
Atribut | Nilai |
---|---|
Nama Produk | SQL Server |
ID Peristiwa | 9017 |
Sumber Kejadian | MSSQLSERVER |
Komponen | SQLEngine |
Nama Simbolis | LOG_MANY_VLFS |
Teks Pesan | Database %ls memiliki lebih dari %d file log virtual yang berlebihan. Terlalu banyak file log virtual dapat menyebabkan waktu mulai dan pencadangan yang lama. Pertimbangkan untuk menyusutkan log dan menggunakan kenaikan pertumbuhan yang berbeda untuk mengurangi jumlah file log virtual. |
Penjelasan
Selama startup database, SQL Server mendeteksi bahwa database memiliki sejumlah besar file log virtual (VLF) dan mencatat pesan kesalahan ini. Situasi di mana Anda dapat mengalami kesalahan adalah:
- Saat Anda memulai instans SQL Server
- Memulihkan database
- Melampirkan database
Pesan informasi 9017 yang mirip dengan contoh ini dicatat di log kesalahan SQL Server:
Database dbName has more than n virtual log files which is excessive. Too many virtual log files can cause long startup and backup times. Consider shrinking the log and using a different growth increment to reduce the number of virtual log files. Too many virtual log files can adversely affect the recovery time of the database.
Selain itu, jika Anda menggunakan teknologi Replikasi, Pencerminan Database, atau AlwaysOn di lingkungan Anda, Anda mungkin melihat masalah performa dengan teknologi ini.
Efek dari banyak VLF pada replikasi
Terlalu banyak file log dapat memengaruhi replikasi karena proses pembaca log harus memindai setiap file log virtual untuk transaksi yang ditandai untuk replikasi. Anda dapat melihat perilaku ini dengan melacak performa prosedur tersimpan sp_replcmds. Proses pembaca log menggunakan prosedur tersimpan sp_replcmds untuk memindai file log virtual dan membaca transaksi yang ditandai untuk replikasi.
Penyebab
Masalah ini terjadi ketika Anda menentukan nilai kecil untuk parameter FILEGROWTH untuk file log transaksi Anda.
Mesin Database SQL Server secara internal membagi setiap file log fisik menjadi beberapa file log virtual (VLF). Paket Layanan SQL Server 2008 R2 2 memperkenalkan pesan baru (9017) yang dicatat saat database dimulai (baik karena dimulainya instans SQL Server atau karena melampirkan atau memulihkan database) dan memiliki lebih dari 1.000 VLF di SQL Server 2008 R2 atau memiliki lebih dari 10.000 VLFS di SQL Server 2012 dan versi yang lebih baru.
Catatan
Di SQL Server 2012, meskipun pesan ini dicatat ketika database memiliki 10.000 VLF, pesan aktual yang dilaporkan dalam log kesalahan salah menyatakan "1000 VLF." Peringatan memang terjadi setelah 10.000 VLF. Namun, pesan melaporkan 1.000 VLF. Masalah ini dikoreksi dalam rilis selanjutnya.
Tindakan pengguna
Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:
Anda dapat melihat jumlah VLF dan ukuran rata-rata di SQL Server Anda dengan menggunakan kueri ini. Hasilnya akan membantu Anda mengidentifikasi database mana yang akan difokuskan:
SELECT db.name, count(dbl.database_id) as Total_VLF_count, convert(decimal (10,2), avg(dbl.vlf_size_mb)) as Avg_VLF_Size_MB FROM sys.databases db CROSS APPLY sys.dm_db_log_info(db.database_id) dbl GROUP BY db.name ORDER BY Total_VLF_count DESC
Untuk informasi selengkapnya, lihat sys.dm_db_log_info.
Kurangi log transaksi Anda dengan menggunakan DBCC SHRINKDB/DBCC SHRINKFILE atau dengan menggunakan SQL Server Management Studio.
Lakukan peningkatan satu kali ukuran file log transaksi ke nilai besar. Peningkatan satu kali ini dilakukan untuk menghindari pertumbuhan otomatis yang sering terjadi. Untuk informasi selengkapnya, lihat Mengelola ukuran file log transaksi.
Tingkatkan parameter FILEGROWTH ke nilai yang lebih besar dari yang saat ini dikonfigurasi. Ini harus didasarkan pada aktivitas database Anda dan seberapa sering file log Anda tumbuh.
Selain itu, Anda dapat meninjau artikel perbaikan berikut, bergantung pada versi SQL Server yang saat ini Anda jalankan:
Tip
Untuk menentukan distribusi VLF optimal untuk ukuran log transaksi saat ini dari semua database dalam instans tertentu, dan kenaikan pertumbuhan yang diperlukan untuk mencapai ukuran yang diperlukan, lihat skrip ini.