我正在制作一个对SQL服务器数据库执行以下操作的WebApi。 该表具有三列,即UserID(Pk),Data和TimeStamp。 在API中,我正在使用storedProc来查找最大的UserID,并使用另一个storedProc在下一个UserID中插入新数据。我的要求是解决并发性(如果2个请求同时到达并执行)。
我遇到了几种解决并发的锁定机制,但是我不确定哪种处理时间更好。我希望每天有将近10万个请求。
使用静态对象锁定
例如
private static readonly object lk = new object();
public void StoreData()
{
lock (lk)
{
//Calls Stored procedures
}
}
使用交易范围
Using(DbTransaction trans = conn.BeginTransaction(System.Data.IsolationLevel.Serializable))
{
// Calls stored procedure
}
请提出建议,让我知道是否还有更好的方法。