gpt4 book ai didi

sql - 在事务中包装插入对 Sql Server 的性能有多大帮助?

转载 作者:太空狗 更新时间:2023-10-30 01:44:19 25 4
gpt4 key购买 nike

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

将这些插入封装在一个事务中(与一次运行一个相反)的性能增益是巨大的、最小的还是介于两者之间?

为什么?

编辑:这是针对 Sql Server 2005 的,但如果有不同之处,我会对 2000/2008 感兴趣。另外我应该提一下,我理解事务主要是为了数据一致性的观点,但我想关注性能影响。

最佳答案

这实际上可能是一种影响。事务的重点不在于你做了多少,而在于保持数据更新的一致性。如果您有需要一起插入并且相互依赖的行,那么这些记录就是您包装在事务中的记录。

事务是为了保持数据的一致性。这应该是您在使用事务时首先想到的。例如,如果您从支票账户中借记(取款),您要确保贷记(存款)也已完成。如果其中任何一个不成功,则应回滚整个“事务”。因此,这两个操作都必须包含在一个事务中。

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

如果您从 C# 代码执行此操作,那么在我看来,您应该构建一个批量导入例程,而不是通过编码一次执行数百万次插入。

关于sql - 在事务中包装插入对 Sql Server 的性能有多大帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/521887/

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