Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 向应用程序添加显式数据库事务是否会严重影响性能?_Sql Server_Database_Transactions - Fatal编程技术网

Sql server 向应用程序添加显式数据库事务是否会严重影响性能?

Sql server 向应用程序添加显式数据库事务是否会严重影响性能?,sql-server,database,transactions,Sql Server,Database,Transactions,我有一个在SQL Server上运行的旧应用程序(但我怀疑我要问的概念适用于大多数/所有主要的数据库),它被重新编写。除了大量UI更改和更多模块化后端代码导致不同的查询之外,主要更改之一是旧代码使用零显式事务 是的,如果发生了错误,你会留下孤儿记录之类的。新应用程序已经纠正了这一点,在有多个插入/更新时使用事务。这似乎是一个不需要动脑筋的问题,但我们发现,我们收到了很多关于性能的投诉,特别是来自拥有更多数据的客户(每个客户都有自己独立的数据库)。我是否正确地假设,考虑到事务,有更多的空间让资源等

我有一个在SQL Server上运行的旧应用程序(但我怀疑我要问的概念适用于大多数/所有主要的数据库),它被重新编写。除了大量UI更改和更多模块化后端代码导致不同的查询之外,主要更改之一是旧代码使用零显式事务

是的,如果发生了错误,你会留下孤儿记录之类的。新应用程序已经纠正了这一点,在有多个插入/更新时使用事务。这似乎是一个不需要动脑筋的问题,但我们发现,我们收到了很多关于性能的投诉,特别是来自拥有更多数据的客户(每个客户都有自己独立的数据库)。我是否正确地假设,考虑到事务,有更多的空间让资源等待锁,这可能会严重影响性能

顺便说一句,另一个主要区别是旧应用程序在某种程度上依赖于存储过程,而新应用程序根本不使用存储过程。我在这里只是以防万一,但我的印象是,事务更可能成为问题,特别是考虑到系统中查询的复杂性(有大量连接的大量查询,SELECT子句中的子查询,等等)


另外,值得注意的是,我们不是在讨论大型数据库/表。每个客户机都有自己的数据库,客户机的表中有几百万条更糟糕的记录,但没有数十亿/万亿条记录或类似的记录。虽然引入了一些新的查询,也有一些进行了更改,但大多数查询与旧系统中的查询相同,有时只是在存储过程之外运行,而以前它们是在存储过程中运行的。此外,还检查了许多更复杂的查询,当它们自己运行时,它们速度很快。

我们通过设置一系列打包为dbWarden的作业/过程来解决这个问题。这使我们能够确定在某些情况下发生了大量阻塞。一旦我们弄明白了这一点,我们就进行了调整以避免阻塞,包括使某些操作读/写到不同的数据库,调整索引,并使一些操作查询不同的数据存储(ElasticSearch)。

这必须根据具体情况进行考虑,否则您的问题会受到很多意见的影响。考虑对用户抱怨的事务进行一些性能监视。如果你不能重现你的环境中的减慢,考虑在问题代码的开头和结尾添加一些日志来确定瓶颈在哪里。我只是想知道这是否有可能,或者添加显式事务是否可能导致这种降级。所以,你有完全不同的应用程序,以完全不同的方式处理数据库,你有“大量查询”从SPs转换为adhocs,你没有测量到,甚至不能说是否有写或读操作执行缓慢和。。。责怪交易?@Ivan有一些不同的疑问,但大多数都和以前一样。最复杂的锁已经过测量,并且运行良好,这就是为什么我怀疑如果事务会使锁定变得更糟糕,那么在负载下一起工作的所有东西都会受到影响。我不是责怪交易,我是问它们是否可能导致这种减速。也许你是一名DBA,了解SQL Server以及如何检查性能,但不是每个人都知道,我的核心能力在其他方面,但我的任务是研究这一点。建立一个性能数据仓库并开始分析数据。是的,这是SQL Server中很长一段时间以来的一项功能。