db2 中批量更新比单次更新快吗?

2024-01-30

我有一个包含 10 列的表,该表中有数千/数百万行。 在某些情况下,我想一次更新超过 10K 条记录。目前我的场景代码按顺序工作,

for i in (primary key ids for all records to be updated)
     executeupdate(i)

我的想法是,我不会运行相同的查询 10K 次,而是将所有 id 添加到字符串中并运行单个更新查询,例如,

executeupdate(all ids) 

实际的数据库查询可以是这样的,

假设我有主键 ID,例如

10001,10002,10003,10004,10005

所以在第一种情况下我的查询会像

update tab1 set status="xyz" where Id="10001"
update tab1 set status="xyz" where Id="10002"
update tab1 set status="xyz" where Id="10003"
update tab1 set status="xyz" where Id="10004"
update tab1 set status="xyz" where Id="10005"

我的批量更新查询将是这样的,

update tab1 set status="xyz" where id in ("10001","10002","10003","10004","10005")

所以我的问题是,通过批量更新我会得到任何性能改进(执行时间) 或者总查询执行时间将与每个记录的索引扫描和更新相同?

注意:我使用 DB2 9.5 作为数据库

Thanks.


一般来说,无论数据库如何,“批量”更新都会更快。当然,您可以测试两者的性能,并报告回来。

每次致电update在处理查询、在表/页/行上设置锁方面需要大量开销。进行一次更新会合并此开销。

单一的缺点update是整体上可能会更快,but它可能会锁定底层资源更长的时间。例如,单个更新可能每次需要 10 毫秒,其中 1,000 个更新的运行时间为 10 秒。但是,没有任何资源被锁定超过 10 毫秒。批量更新可能需要 5 秒,但资源将在这段时间内被锁定。

要加快这些更新速度,请确保id已编入索引。

我应该注意一下。这是一个一般原则。我还没有专门测试过 DB2 上的单次更新与多次更新性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

db2 中批量更新比单次更新快吗? 的相关文章

随机推荐

  • R - 按列名 AS CHARACTER 对 data.frame 进行排序

    我知道我可以这样订购 data frame test data frame A c 4 2 4 B c 8 3 2 ordered test with test order A B 但是 当列由列名指定为字符变量时 如何完成同样的事情呢 这
  • Lua - 初始化[重复]

    这个问题在这里已经有答案了 我无法在 Arch Linux 下正确初始化 lua Lua 最新版本 这是我的代码 include
  • 为特定风格和 buildType 定义 buildconfigfield

    我有两种口味 比如说香草和巧克力 我还有 调试 和 发布 构建类型 并且我需要 Vanilla Release 的字段为 true 而其他 3 个组合应该为 false def BOOLEAN boolean def VARIABLE VA
  • 检测 window.location 的变化

    我正在尝试检测 window location 中的更改 例如 如果用户尝试重新加载页面 则会收到通知 但我似乎找不到方法来做到这一点 有一些与之相关的事件吗 Thanks The unload当用户离开页面时触发该事件 还有一个befor
  • 异步/同步 JavaScript

    我在理解异步和同步 Javascript 之间的区别时遇到了一些困难 希望有人能对此有所了解 我知道 Javascript 本质上是同步的 但您可以使用异步事件 回调来改变程序流程 但是 如果您调用包含 AJAX 且没有回调的函数 会发生什
  • 通过 url 将参数传递给 python azure 函数

    我试图通过 azure 函数使 hello world 示例适用于 python 基本函数尝试通过 url 检索输入的名称 然后响应 Hello Name 事实证明 通过天蓝色门户提供的示例模板不能开箱即用 基本示例如下所示 import
  • 在 SwiftUI 中根据宽度计算每行的项目数

    这是我之前问题的延伸 在 SwiftUI 中使用获取视图的宽度 https stackoverflow com questions 57577462 get width of a view using in swiftui 57591483
  • apache 到 tomcat:mod_jk 与 mod_proxy

    使用有什么优点和缺点mod jk and mod proxy用 apache 来处理 tomcat 实例 我多年来一直在生产中使用 mod jk 但我听说这是前端 tomcat 的 旧方法 我应该考虑改变吗 会有什么好处吗 这些模块的优缺点
  • 触摸屏平板电脑上的 WPF Scrollviewer

    我正在编写一个 WPF 应用程序 它将在完整的 Windows 8 触摸屏平板电脑 而不是 RT 上运行 但是触摸滚动似乎不起作用 所以我想知道我是否做错了什么或者是否有可能 所以 我有一个带有滚动查看器的 WPF 窗口 在该滚动查看器中
  • pandas 3x3 散点矩阵缺少标签

    我使用以下代码创建一个 pandas 散点矩阵 import numpy as np import pandas as pd a np random normal 1 3 100 b np random normal 3 1 100 c n
  • Jenkins 环境变量在构建后步骤中可用

    据我所知 Jenkins 在构建执行期间设置了某些环境变量 但我的问题是我可以在构建后脚本中访问这些变量吗 我进行了快速测试 但无法从构建后步骤 python 脚本访问 PROJECT NAME 和 BUILD URL 等 有没有办法可以从
  • 如何在linq中直接执行SQL查询

    在 C 和 VS 2008 中 我有一个查询 在这个查询中我连接了多个表 所以我不知道类型 我想知道如何在 linq 中直接运行 sql 查询 IEnumerable
  • tomcat中connectionTimeout的含义

    这个参数对于tomcat来说意味着什么 它被宣布于server xml如下
  • OpenCV K 均值 (kmeans2)

    我正在使用 Opencv 的 K means 实现来对一大组 8 维向量进行聚类 它们聚类得很好 但我找不到任何方法来查看聚类过程创建的原型 这可能吗 OpenCV 似乎只提供对集群索引 或标签 的访问 如果没有 我想是时候自己实现了 我不
  • 为什么我可以在 constexpr 函数内调用非 constexpr 函数?

    考虑以下代码 include
  • AccessibilityService - PerformGlobalAction 无法在自己的应用程序中工作

    我正在尝试通过发送系统返回新闻事件AccessibilityService这工作正常 但前提是我不在自己的应用程序中 我总是得到true from performGlobalAction无论我是否在自己的应用程序中 但只有当我不在自己的应用
  • 在可排序 UI 中制作表格行向上移动的动画

    我使用 Sortable jQuery UI 来允许用户拖放表行 这允许用户根据自己的偏好对表中的项目进行排名 用户完成对列表的排序后 他们按下保存按钮 该按钮将执行 Ajax 调用 新排名将保存到数据库中 并且表格会简要突出显示 我现在添
  • Rebus 和远程队列

    我正在使用画笔画 https github com rebus org https github com rebus org v 0 83 到目前为止 它都是在一台机器上进行的 现在我需要使用从我的网站到应用程序服务器的远程队列 我不太清楚
  • 适用于 Windows 的 LLVM C++ IDE

    是否有一些适用于 Windows 的 C C IDE 融合的使用 LLVM 编译器 和 Clang C C 分析器 就像现代 Xcode 一样 我有 Dev Cpp 它使用过时的 GCC 并且代码 块 https en wikipedia
  • db2 中批量更新比单次更新快吗?

    我有一个包含 10 列的表 该表中有数千 数百万行 在某些情况下 我想一次更新超过 10K 条记录 目前我的场景代码按顺序工作 for i in primary key ids for all records to be updated e