SQL事务网络性能

时间:2018-07-13 09:33:47

标签: sql-server sql-server-2008

如果要通过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;

如果许多客户端将同时发送数据,那么哪种方法更合适?

2 个答案:

答案 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

获取更多信息。