Sql插入查询性能
我想将n条记录插入到单个表中.可能有许多并发用户,他们可能会从此表中插入/更新/选择数据.在这样的表中插入更好的方法是1000条记录: >将单个SQL查询发送到具有多个插入的数据库.这会将服务器保存到数据库调用,但是(我不确定)会锁定表,直到插入完成并且对该表的所有其他查询将等待. 这取决于某些东西,还是只有一种始终是最佳的方式? 我使用的数据库是MS SQL,但有趣的是它在Oracle等其他数据库中是如何工作的. 解决方法这完全取决于您使用的RDBMS.在Oracle中,写入从不阻止读取,这就是为什么您可以安全地将数据全部放在一起.但请注意,这会降低性能,因为并发查询需要从UNDO表空间中获取需要额外读取的数据. 在SQL Server写入中,对受影响的行/页/表执行阻止读取(取决于锁升级问题),除非将TRANSACTION ISOLATION LEVEL设置为SNAPSHOT. 在允许并发写入和读取的所有事务引擎中,引擎需要在某处存储旧数据和新数据,以便同时可用. 在Oracle中,旧数据被复制到UNDO表空间. 在SQL Server中,它被复制到tempdb中(仅当启用了SNAPSHOT隔离时,否则它只是被锁定). 这总是需要一些资源(内存或磁盘),如果UPDATE查询影响很多行,则可能会耗尽这些资源. (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |