Saya menjalankan database transaksional yang tinggi (rata-rata ~ 175k transaksi / Menit, hampir 9 juta catatan per jam ditambahkan dan dihapus)
Hingga baru-baru ini, ini belum terlalu menjadi masalah seperti yang kita alami ~ catatan 7,5M ditambahkan dan dihapus tetapi dengan masuknya data terbaru pembersihan hantu tampaknya tidak mampu mengimbangi pembersihan ruang yang tidak terpakai pada tabel / indeks.
Beberapa hari yang lalu kami mencapai 53 GB 'Unused Space' di 16 tabel (kebanyakan 2 dari mereka) sehingga hasilnya mulai mencari ke dalam proses pembersihan hantu untuk menemukannya berjalan setiap 5 detik sekali dan berjalan di lebih dari 10 halaman.
Solusi saya saat ini adalah pagi itu saya menjalankan tiga utas dari perintah berikut:
DECLARE @2hours datetime = dateadd(hour,2,getutcdate())
WHILE getutcdate() < @2hours
BEGIN
DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS
END
untuk mengejar ketinggalan dengan backlog dari malam sebelumnya (ketika sebagian besar penghapusan kami dilakukan)
Saya bertanya-tanya apakah ada cara untuk mengubah pengaturan default dari 5 detik dan 10 halaman untuk mengatakan setiap detik atau menjalankan lebih dari 20 halaman, apakah ada cara untuk melakukan itu atau haruskah saya terus hanya memutar beberapa prosa pembersihan untuk menghapus data, atau jika ada tindakan lain yang dapat membantu ini
Pengindeksan ulang berjalan pada sebagian besar indeks paling sedikit sekali seminggu (kebanyakan setiap hari)
SQL Server 2012 Enterprise SP3_CU8 (meningkatkan ke CU9 besok) di AlwaysOn High Availabilty Cluster juga dengan replikasi (distribusi pada server terpisah)
sumber