gpt4 book ai didi

c# - SQL 服务器 : are transaction locking table for other users?

转载 作者:行者123 更新时间:2023-12-05 06:32:26 26 4
gpt4 key购买 nike

当我运行多个查询时,事务是否会锁定我的表?

示例:如果另一个用户尝试在我使用事务的同时发送数据,会发生什么情况?

还有我怎样才能避免这种情况,还要确保所有数据都已成功插入数据库?

Begin Tran;
Insert into Customers (name) values(name1);

Update CustomerTrans
set CustomerName = (name2);

Commit;

最佳答案

您必须巧妙地实现交易。以下是一些与性能相关的要点:-

  1. 锁定乐观/悲观。在悲观锁定中,整个表都被锁定。但在乐观锁定中,只有特定的行被锁定。
  2. 隔离级别已提交读/未提交读。当表被锁定时,这取决于您的业务场景,如果它允许您,那么您可以使用 NoLock 进行脏读。
  3. 尝试在更新中使用 where 子句并进行适当的索引。对于任何繁重的查询,请检查查询计划。
  4. 事务超时应该非常短。所以如果表被锁定那么它应该抛出错误并且在 catch block 中你可以重试。

这些是您可以做的几点。

关于c# - SQL 服务器 : are transaction locking table for other users?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51324511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com