Saya telah meneliti permintaan yang berjalan lambat di database kami, dan telah menyimpulkan bahwa ini adalah Masalah Kunci Ascending klasik. Karena baris baru disisipkan hampir secara konstan, dan sepotong SQL yang diberikan untuk menarik data terbaru dari DB berjalan setiap 30 menit, opsi pertama untuk memperbarui statistik setiap 30 menit terdengar seperti itu bisa menjadi pemborosan sumber daya.
Jadi, saya melihat ke Trace Flag 2389 yang pada prinsipnya harus membantu, namun itu membutuhkan kolom Leading untuk dicap sebagai Ascending, dan ketika saya menggunakan Trace Flag 2388 untuk memeriksa statistik indeks (PK), saya melihat bahwa kolom terkemuka sebenarnya dicap sebagai Stationary - karena untuk beberapa indeks PK pada tabel lain diperbarui pada saat yang sama.
Tampaknya tidak ada banyak panduan tentang apa yang menghasilkan branding Stationary, namun saya menemukan KB2952101 yang mengatakan jika kurang dari 90% insert lebih besar dari nilai maksimum yang lama, itu akan digolongkan sebagai Stationary. Semua sisipan kami adalah kiriman baru, dan kolom utama adalah kolom IDENTITAS bigint, jadi 100% sisipan harus lebih besar dari nilai maksimum sebelumnya.
Jadi pertanyaan saya adalah mengapa kolom akan dicap sebagai Stationary, padahal itu jelas Ascending?
Upaya sebelumnya untuk menyelesaikan masalah ini untuk beberapa harian yang menjalankan SQL (yang bekerja dengan sangat baik) menghasilkan pekerjaan yang diatur untuk memperbarui statistik untuk tabel ini setiap malam. Pembaruan tidak melakukan FULLSCAN, jadi mungkinkah pemindaian sampel terkadang melewatkan baris baru, sehingga tidak selalu muncul sebagai naik?
Satu-satunya hal lain yang dapat saya pikirkan yang dapat mempengaruhi hal ini, adalah bahwa kami memiliki pekerjaan arsip yang berjalan di belakang layar menghapus baris pada usia tertentu. Mungkinkah ini berdampak pada branding?
Servernya adalah SQL Server 2012 SP1.
Pembaruan : Lain hari, pembaruan statistik lainnya - pencitraan stasioner yang sama. Ada 28049 sisipan baru sejak pembaruan statistik sebelumnya. Setiap baris memiliki stempel waktu ketika dimasukkan, jadi jika saya memilih maks (id) dari tabel di mana stempel waktu <'20161102' Saya mendapatkan 23313455 Demikian pula, jika saya melakukan itu ketika statistik diperbarui hari ini, saya mendapatkan 23341504.
Perbedaan antara ini adalah 28049 sisipan baru, jadi seperti yang Anda lihat, semua sisipan baru diberi kunci naik baru (seperti yang diharapkan), menyarankan kolom terkemuka harus dicap sebagai naik bukan stasioner.
Selama periode yang sama, pekerjaan pengarsipan kami menghapus 213.629 baris (kami perlahan membersihkan data lama). Apakah ada kemungkinan bahwa pengurangan jumlah baris dapat berkontribusi pada pencitraan stasioner? Saya sudah menguji ini sebelumnya dan sepertinya tidak ada bedanya.
Pembaruan 2 : Satu hari lagi, pembaruan statistik lainnya, dan kolom sekarang ditandai sebagai Naik! Sesuai teori tentang penghapusan yang mempengaruhi hal ini, saya memeriksa persentase pembaruan yang disisipkan dibandingkan dengan yang dihapus, dan kemarin 13% adalah sisipan, sedangkan sisipan dua hari sebelumnya menyumbang sekitar 12%. Saya tidak berpikir itu memberi kita sesuatu yang konklusif.
Menariknya, tabel terkait yang mendapatkan rata-rata 4 baris yang dimasukkan untuk setiap baris dimasukkan ke dalam tabel utama ini, dan apakah statistiknya diperbarui pada saat yang sama, apakah kolom IDENTITAS PK-nya masih stasioner !?
Pembaruan 3 : Selama akhir pekan kami mendapatkan lebih banyak sisipan. Pagi ini kolom utama kembali ke Alat Tulis. Pada pembaruan statistik terakhir, kami memiliki 46840 sisipan dan hanya 34.776 yang dihapus.
Sekali lagi, yang menarik, tabel terkait yang saya sebutkan di atas sekarang memiliki kolom terkemuka bermerek Ascending. Apakah tidak ada dokumentasi yang dapat menjelaskan hal ini?
Pembaruan 4 : Sudah seminggu atau lebih sekarang, pekerjaan pengarsipan telah menghapus simpanan, jadi kami secara konsisten menghapus sekitar dua pertiga dari jumlah baris yang dimasukkan. Statistik menunjukkan hasil beragam di tabel terkait, dengan satu menunjukkan stasioner, dan dua menunjukkan naik, meskipun mereka semua diperbarui secara proporsional dengan cara yang sama.