Saya sedang menyelidiki menggunakan READPAST
petunjuk untuk mengurangi penguncian sumber daya dalam subsistem keuangan aplikasi kita.
Sepertinya cara yang baik untuk pergi karena catatan transaksi keuangan hanya pernah ditambahkan, tidak pernah diperbarui atau dihapus. Satu-satunya baris yang akan dilewati adalah baris baru yang dimasukkan dalam suatu transaksi; mereka secara efektif tidak ada di dunia luar sampai transaksi dilakukan.
Namun, saya melihat kinerja yang lebih buruk pada kueri yang memanfaatkan tampilan indeks yang telah saya berikan READPAST
petunjuknya. Membandingkan rencana kueri, sepertinya dengan petunjuk itu, pengoptimal kueri memilih untuk tidak menggunakan tampilan yang diindeks dan sebaliknya kembali memperlakukannya seperti tampilan biasa.
Saya tidak yakin mengapa itu terjadi; Saya membayangkan tampilan yang diindeks menjadi seperti indeks lain dalam kunci yang dapat dikunci selama operasi dan menambahkan READPAST
akan bekerja sama.
SELECT TOP 1 isa.InvoiceId
FROM Financial_InvoiceSummaryAmounts isa WITH (READPAST)
WHERE isa.TotalOwedAmount = 0.0
SELECT TOP 1 isa.InvoiceId
FROM Financial_InvoiceSummaryAmounts isa
WHERE isa.TotalOwedAmount = 0.0
Menambahkan NOEXPAND
petunjuk juga tampaknya berhasil, tetapi saya tertarik untuk mempelajari lebih lanjut tentang mengapa READPAST
pengoptimal kueri membuat pilihan itu sejak awal (sebagai bagian dari jawaban lengkap).