Performance 如何在数据库之间移动大量数据?

Performance 如何在数据库之间移动大量数据?,performance,jdbc,db2,Performance,Jdbc,Db2,我需要比较来自两个数据库(都是DB2)的数据,这两个数据库位于不同的服务器上,它们之间没有连接。因为这两个数据库都在生产中使用,我不想让它们过载,因此我将在本地机器上创建一个新的数据库(可能是MySQL),从这两个DB2中提取数据,插入MySQL并在本地进行比较 我想用Java来完成这项任务,所以我的问题是如何尽可能有效地完成这项任务,而不会使生产数据库过载。我做了一些研究,得出了以下几点: 限制我将在初始SELECT语句中使用的列数 调整ResultSet对象的获取大小(IBMDB2JCC驱

我需要比较来自两个数据库(都是DB2)的数据,这两个数据库位于不同的服务器上,它们之间没有连接。因为这两个数据库都在生产中使用,我不想让它们过载,因此我将在本地机器上创建一个新的数据库(可能是MySQL),从这两个DB2中提取数据,插入MySQL并在本地进行比较

我想用Java来完成这项任务,所以我的问题是如何尽可能有效地完成这项任务,而不会使生产数据库过载。我做了一些研究,得出了以下几点:

  • 限制我将在初始SELECT语句中使用的列数
  • 调整ResultSet对象的获取大小(IBMDB2JCC驱动程序的默认值似乎是64)
  • 使用PreparedStatement对象预编译SQL
还有什么我能做的,或者其他的建议吗


谢谢

对于map reduce(hadoop)来说,这听起来是一项很棒的工作。一个作业,两个映射器,每个DB一个,一个减速机进行比较。它可以根据需要扩展到任意多个处理器,或者只在一台机器上运行。

DB2 for Linux UNIX,Windows将导出实用程序作为其运行时客户端的一部分。此实用程序可以指向z/OS上的DB2数据库,以快速将表(或查询结果集)导出到客户机上的平面文件中。您可以选择平面文件是分隔的、固定宽度的还是DB2专有的IXF格式。z/OS DBA应该能够帮助您在工作站上配置客户端,并根据导出实用程序的要求将必要的包绑定到z/OS数据库中


一旦客户机上有了扁平文件,您就可以随意比较它们。

在生产轻量使用期间安排数据库副本。您的目标是确定两个数据库(或表)之间的行级别差异吗?另外,生产系统运行的是哪种操作系统?@GilbertLeBlanc也应该将此添加到列表中,绝对不会在高峰使用时间这样做,thanks@NealB是的,目标是比较并找出两个数据库中的一些数据之间的差异(每个数据库使用不同的表来存储这些数据)。这两个生产系统都使用z/OS,但不幸的是,它们都没有管理员权限,只需阅读对这两个生产数据库的访问权限。感谢您的建议,我不知道Hadoop项目,它看起来很有趣,但在这种情况下可能会有点过头?不确定,但根据其描述,当您需要对大量数据进行计算广泛的分析时。。在我的例子中,我只想移动大量的数据,然后逐行比较,所以没有这么昂贵的操作因为您计划使用一台机器,我不认为Hadoop是一个理想的选择..正如您所说,它适合处理大型数据集,跨多台机器的集群。@user1482510这几乎就是我将采取的方法。将表格转储为平面文件,然后使用任何可用的文件差异工具。您应该能够使用固定的db/2和OS实用程序完成整个工作。