Database transaksional digunakan untuk pemesanan barang ...
Vendor kami diminta untuk mengganti #temptable dengan @tablevariables (karena kunci kompilasi yang berat) tetapi sebaliknya mereka diganti dengan tabel aktual yang menambahkan SPID sebagai kolom untuk memastikan prosedur yang tersimpan hanya bekerja pada baris yang berlaku.
Apakah Anda melihat risiko dalam metode operasi ini? Sebelum semua transaksi diisolasi dalam transaksi mereka sendiri ... Saya khawatir kita mungkin akhirnya mengunci tabel ini banyak, tetapi pendapat mereka adalah bahwa SQL menggunakan penguncian tingkat-baris dan ini tidak akan membuat lebih banyak kunci.
SQL Server Versi: 2016 Enterprise - 13.0.5216.0
CREATE TABLE dbo.qryTransactions (
ID int IDENTITY (0,1) NOT NULL CONSTRAINT pk_qryTransactions PRIMARY KEY CLUSTERED,
spid int NOT NULL,
OrderID int,
ItemID int,
TimeTransactionStart datetime,
TimeTransactionEnd datetime,
...other fields
)
CREATE INDEX idx_qryTransactions_spidID ON qryTransactions (spid, ID) INCLUDE (ItemID, OrderID, TimeTransactionStart, TimeTransactionEnd)