Saya memiliki proses dengan Select yang membutuhkan waktu lama untuk menyelesaikannya, dengan urutan 5 hingga 10 menit.
Saat ini saya tidak menggunakan NOLOCK sebagai petunjuk untuk mesin database MS SQL.
Pada saat yang sama kami memiliki proses lain yang melakukan pembaruan dan memasukkan ke dalam database yang sama dan tabel yang sama.
Proses pertama telah dimulai, baru-baru ini diakhiri dengan pesan sebelum waktunya
SQLEXCEPTION: Transaksi menemui jalan buntu pada sumber daya kunci dengan proses lain dan telah dipilih sebagai korban kebuntuan.
Proses pertama ini berjalan di situs lain dalam kondisi yang sama tetapi dengan database yang lebih kecil dan dengan demikian pernyataan pemilihan yang dimaksud membutuhkan waktu yang lebih singkat (sekitar 30 detik atau lebih). Di situs lain ini, saya tidak mendapatkan pesan kebuntuan di situs lain tersebut. Saya juga tidak mendapatkan pesan ini di situs yang pada awalnya mengalami masalah, tetapi, saya berasumsi, karena database telah berkembang, saya yakin saya pasti telah melewati beberapa ambang batas. Inilah pertanyaan saya:
- Mungkinkah waktu yang diperlukan untuk mengeksekusi transaksi membuat proses terkait lebih mungkin ditandai sebagai korban jalan buntu.
- Jika saya menjalankan pemilihan dengan petunjuk NOLOCK, apakah ini akan menghilangkan masalah?
- Saya menduga bahwa bidang datetime yang diperiksa sebagai bagian dari klausa WHERE dalam pernyataan pilih menyebabkan waktu pencarian yang lambat. Dapatkah saya membuat indeks berdasarkan bidang ini? Apakah itu dianjurkan?