当前位置: 首页 > 面试题库 >

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

夏晋
2023-03-14
问题内容

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

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

为什么?

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


问题答案:

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

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

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

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



 类似资料:
  • 在尝试将CLOB从一个数据库复制到另一个数据库时,我发现Oracle(11g)的性能很差。我尝试了几件事,但都没能改善这一点。 CLOB用于收集报告数据。这可能是相当大的一个记录到记录的基础上。我在远程数据库(通过WAN)上调用一个过程来构建数据,然后将结果复制回公司总部的数据库进行比较。一般格式为: 为了提高性能,我将远程站点的结果累积到表的远程副本中。在程序运行结束时,我尝试将数据复制回来。此

  • 我有一个数据模型,在一个实体和11个其他实体之间有一对多的关系。这12个实体一起代表一个数据包。我遇到的问题是,在这些关系的“多”端发生的插入数量。其中一些可以有多达100个单独的值,因此要在数据库中保存一个完整的数据包,最多需要500次插入。 我在InnoDB表中使用MySQL 5.5。现在,通过对数据库的测试,我发现在处理批插入时,它可以轻松地每秒执行15000次插入(对于加载数据,插入次数甚

  • 问题内容: 在一个表(jdbc / connector-mysql数据库)中插入1000行的最佳/最省时的方法是什么?(它是一个缓冲区,每次充满时都需要转储到数据库中) 1-一个自动生成/固定的SQL语句? 2 3-存储过程 4-通过文件批量插入数据? 5-(您的解决方案) 问题答案: LOAD DATA INFILE语句可能是提高性能的最佳选择。(来自上面的选项列表中的#4)尽管由于您需要创建中

  • 将excel的大数据导入到MySQL数据库需要很长时间,那么如何提高性能呢? Excel数据喜欢以下内容: 学生表 床单课程 MySQL的表喜欢如下: 学生桌 资源表 图像的浅灰色区域可能会得到改善,但我不知道如何对其进行优化。使用 和字段确定行数据是否唯一<代码>参考id和表中的字段确定行数据是否唯一。

  • 我只是想知道TABLOCK是否会提高批量插入的性能? 根据中的第一个答案https://dba.stackexchange.com/questions/165966/how-does-one-investigate-the-performance-of-a-bulk-insert-statement,看来塔洛克会的。 根据官方文件https://docs.microsoft.com/en-us/s

  • 问题内容: 我有一个数据模型,该数据模型在一个实体和其他11个实体之间具有一对多关系。这12个实体一起代表一个数据包。我遇到的问题是与这些关系的“许多”方面发生的插入次数有关。其中一些可以具有多达100个单独的值,因此要将一个完整的数据包保存在数据库中,最多需要500次插入。 我正在将MySQL 5.5与InnoDB表一起使用。现在,通过测试数据库,我发现在处理批量插入时,它每秒可以轻松地每秒进行