Saya memiliki meja besar dengan 7,5 miliar baris dan 5 indeks. Ketika saya menghapus sekitar 10 juta baris, saya perhatikan bahwa indeks yang tidak tercakup tampaknya menambah jumlah halaman tempat mereka disimpan.
Saya menulis permintaan dm_db_partition_stats
untuk melaporkan perbedaan (setelah - sebelumnya) di halaman:
Indeks 1 adalah indeks berkerumun, Indeks 2 adalah kunci utama. Yang lain tidak tertutup dan tidak unik.
Mengapa halaman meningkat pada indeks non-cluster itu?
Saya berharap angkanya paling buruk tetap sama.
Saya melihat penghitung kinerja melaporkan peningkatan pemisahan halaman selama penghapusan.
Saat menghapus, apakah catatan hantu harus pindah ke halaman lain? Apakah ini ada hubungannya dengan "penyunat unik"?
Kami berada di tengah meluncurkan RCSI, tetapi sekarang, RCSI tidak aktif.
Ini adalah simpul utama dalam grup ketersediaan. Saya tahu bahwa snapshot digunakan entah bagaimana pada secondaries. Saya akan terkejut jika itu relevan. Saya berencana untuk menggali ini (mencari output halaman dbcc) untuk mempelajari lebih lanjut. Inilah harapan seseorang telah melihat sesuatu yang serupa.
sumber
Jawaban:
Satu skenario yang mungkin sangat menghibur saya:
Karena server ini adalah yang utama di AG, itu terpengaruh seperti yang kedua. Info versi ditambahkan pada primer - halaman data sama persis pada primer dan sekunder. Sekunder memanfaatkan toko versi untuk melakukan pembacaan saat baris diperbarui oleh AG, tetapi sekunder tidak menulis versi mereka sendiri dari timestamp ke halaman. Mereka hanya mewarisi versi dari karya utama.
Untuk menunjukkan pertumbuhan, saya mengambil ekspor database Stack Overflow (yang tidak memiliki RCSI diaktifkan) dan membuat banyak indeks pada tabel Posting. Saya memeriksa ukuran indeks dengan sp_BlitzIndex @Mode = 2 (menyalin / menempel ke spreadsheet, dan membersihkan sedikit untuk memaksimalkan kepadatan info):
Saya kemudian menghapus sekitar setengah dari baris:
Yang mengherankan, ketika penghapusan terjadi, file data tumbuh untuk mengakomodasi cap waktu juga! Laporan Penggunaan Disk SSMS menunjukkan peristiwa pertumbuhan - inilah hanya bagian atas yang diilustrasikan:
(Harus menyukai demo di mana penghapusan membuat basis data tumbuh.) Sementara penghapusan berjalan, saya menjalankan sp_BlitzIndex lagi Perhatikan bahwa indeks berkerumun memiliki lebih sedikit baris, tetapi ukurannya telah tumbuh sekitar 1,5GB. Indeks nonclustered pada AcceptedAnswerId telah tumbuh secara dramatis - mereka indeks pada nilai kecil yang sebagian besar nol, sehingga ukuran indeks mereka hampir dua kali lipat!
Saya tidak perlu menunggu penghapusan selesai untuk membuktikannya, jadi saya akan menghentikan demo di sana. Poinnya adalah: ketika Anda melakukan penghapusan besar pada tabel yang diimplementasikan sebelum RCSI, SI, atau AG diaktifkan, indeks (termasuk berkerumun) benar-benar dapat tumbuh untuk mengakomodasi penambahan stempel waktu versi toko.
sumber