Sql插入查询性能

前端之家收集整理的这篇文章主要介绍了Sql插入查询性能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将n条记录插入到单个表中.可能有许多并发用户,他们可能会从此表中插入/更新/选择数据.在这样的表中插入更好的方法是1000条记录:

>将单个SQL查询发送到具有多个插入的数据库.这会将服务器保存到数据库调用,但是(我不确定)会锁定表,直到插入完成并且对该表的所有其他查询将等待.
>在一些块中划分1000条记录,并在多个SQL查询中发送它们.这允许在表上执行其他查询,但是花费时间在服务器上进行数据库调用.

这取决于某些东西,还是只有一种始终是最佳的方式?
这是否取决于是否使用交易,同时插入数据?
是否有其他更好的方法来执行此类插入?

我使用的数据库是MS sql,但有趣的是它在Oracle等其他数据库中是如何工作的.

解决方法

这完全取决于您使用的RDBMS.

在Oracle中,写入从不阻止读取,这就是为什么您可以安全地将数据全部放在一起.但请注意,这会降低性能,因为并发查询需要从UNDO表空间中获取需要额外读取的数据.

sql Server写入中,对受影响的行/页/表执行阻止读取(取决于锁升级问题),除非将TRANSACTION ISOLATION LEVEL设置为SNAPSHOT.

在允许并发写入和读取的所有事务引擎中,引擎需要在某处存储旧数据和新数据,以便同时可用.

在Oracle中,旧数据被复制到UNDO表空间.

sql Server中,它被复制到tempdb中(仅当启用了SNAPSHOT隔离时,否则它只是被锁定).

这总是需要一些资源(内存或磁盘),如果UPDATE查询影响很多行,则可能会耗尽这些资源.

原文链接:https://www.f2er.com/mssql/84173.html

猜你在找的MsSQL相关文章