admin

事务中的包装插入插入有多少帮助提高Sql Server的性能?

sql

好的,可以说我要插入100行,每行大约有150列(我知道听起来很多列,但是我需要将此数据存储在一个表中)。插入将随机发生(即,每当一组用户决定上载包含数据的文件时),每月大约20次。但是,数据库将在连续负载下处理大型企业应用程序的其他功能。这些列是varchars,int以及其他各种类型。

将这些插入物包装在一个事务中(而不是一次运行一次)的性能增益会变大,变小还是介于两者之间?

为什么?

编辑:这是为Sql Server
2005,但如果有其他需要说的话,我会对2000/2008感兴趣。我还要提一下,我理解有关事务主要是为了数据一致性的要点,但是我想着重于性能影响。


阅读 128

收藏
2021-05-10

共1个答案

admin

实际上可能会产生影响。事务的重点不是您要执行多少操作,而是要保持数据更新的一致性。如果您有需要插入的行并且彼此依赖,则这些行就是您包装在事务中的记录。

事务是关于保持数据一致的。使用事务时,这应该是您考虑的第一件事。例如,如果您的支票帐户有借方(提款),则要确保贷方(存款)也已完成。如果其中任何一个都不成功,则应回滚整个“事务”。因此,两个动作都必须包装在一个事务中。

在进行批量插入时,将它们分成3000或5000条记录,并在整个记录集中循环。3000-5000对我来说是一个很好的数字范围。除非您已测试服务器可以处理它,否则请不要超出此范围。另外,我将在每3000或5000条记录中将GO放入批处理中,以进行插入。更新和删除我将GO设置为1000,因为它们需要更多资源来提交。

如果您是使用C#代码执行此操作,那么我认为,您应该构建一个批处理导入例程,而不是一次通过编码一次执行数百万个插入操作。

2021-05-10