如果要通过sqlserver中的网络进行通信,我试图找到哪种方法更有效; 到目前为止,我有两个选择, 一种是分别运行每个查询,例如:
Insert into Customers (name) values (Name1);
Insert into Customers (name) values (Name2);
Insert into Customers (name) values (Name3);
第二个是创建交易;
Begin Transaction;
Insert into Customers (name) values (Name1);
Insert into Customers (name) values (Name2);
Insert into Customers (name) values (Name3);
Commit;
如果许多客户端将同时发送数据,那么哪种方法更合适?
答案 0 :(得分:0)
锁越短越好。长时间的事务可能导致性能下降(长时间的资源等待)和死锁。如果您不打算完全处理“三个”请求的通过-第一种选择更好。
如果其中之一出错则回滚
TRY
BEGIN
Begin Transaction;
Insert into Customers (name) values (Name1);
Insert into Customers (name) values (Name2);
Insert into Customers (name) values (Name3);
Commit;
END
CATCH
BEGIN
THROW;
ROLLBACK;
END
答案 1 :(得分:0)
SQL语句始终在事务中运行。如果您未明确启动一个语句,那么每个SQL语句都会在自身的事务中运行。
唯一的选择是是否在一个事务中捆绑多个语句。跨越多个语句的事务会留下损害并发性的锁。因此,“总是”创建交易不是一个好主意。您应该在成本和收益之间取得平衡。
您可以从:https://dba.stackexchange.com/questions/43254/is-it-a-bad-practice-to-always-create-a-transaction
获取更多信息。