Sql插入查询性能
|
我想将n条记录插入到单个表中.可能有许多并发用户,他们可能会从此表中插入/更新/选择数据.在这样的表中插入更好的方法是1000条记录: >将单个SQL查询发送到具有多个插入的数据库.这会将服务器保存到数据库调用,但是(我不确定)会锁定表,直到插入完成并且对该表的所有其他查询将等待. 这取决于某些东西,还是只有一种始终是最佳的方式? 我使用的数据库是MS SQL,但有趣的是它在Oracle等其他数据库中是如何工作的. 解决方法这完全取决于您使用的RDBMS.在Oracle中,写入从不阻止读取,这就是为什么您可以安全地将数据全部放在一起.但请注意,这会降低性能,因为并发查询需要从UNDO表空间中获取需要额外读取的数据. 在SQL Server写入中,对受影响的行/页/表执行阻止读取(取决于锁升级问题),除非将TRANSACTION ISOLATION LEVEL设置为SNAPSHOT. 在允许并发写入和读取的所有事务引擎中,引擎需要在某处存储旧数据和新数据,以便同时可用. 在Oracle中,旧数据被复制到UNDO表空间. 在SQL Server中,它被复制到tempdb中(仅当启用了SNAPSHOT隔离时,否则它只是被锁定). 这总是需要一些资源(内存或磁盘),如果UPDATE查询影响很多行,则可能会耗尽这些资源. (编辑:均轻资讯网_我爱站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- wcf – 如何从自定义位置读取app.config,即从.NET中的数据库
- sql – Oracle ORA-04068中的频繁错误:已丢弃现有的包状态
- sql-server-2005 – 触发器是否有可能找到修改数据的存储过
- sql数据类型转换有哪些办法?
- sql-server – 在“正在恢复”状态下突然迁移的SQL Server数
- T:SQL:从行中选择值作为列
- sql-server – 与事务组合触发
- sql – 在视图中转换科学记数法(来自varchar – gt;数字)
- sql – 如何计算Oracle中字符串中的单词数?
- sql-server – 如何获取SQL Server表中每行的实际数据大小?

