多线程读取重复数据入库java_java-多线程数据库读取

网络

首先,由于无论如何使用rowid和rownum是供应商锁定的,因此您应该考虑使用数据库存储的例程.它可以显着减少将数据从数据库传输到应用程序服务器的开销(特别是如果它们位于不同的计算机上并通过网络连接).

考虑到您有8000万条记录要传输,这可能对您来说是最好的性能提升,尽管它取决于线程所做的工作.

显然,增加带宽也将有助于解决网络问题.

磁盘性能

在更改代码之前,请在任务运行时检查硬盘驱动器负载,也许它只是不能处理那么多的I / O(同时读取10个线程).

迁移到SSD / RAID或群集数据库可能会解决此问题.在这种情况下,更改访问数据库的方式不会.

多线程可以解决CPU问题,但是数据库主要依赖于磁盘系统.

行号

如果要使用rowid和rownum实现它,可能会遇到几个问题.

1)rownum是为每个查询的结果动态生成的.因此,如果查询没有显式

排序,并且每次运行查询时某些记录可能具有不同的行编号.

例如,您第一次运行它并获得如下结果:

some_column | rownum

____________|________

A | 1

B | 2

C | 3

然后您第二次运行它,因为您没有显式排序,所以dbms(出于某种已知的原因)决定返回如下结果:

some_column | rownum

____________|________

C | 1

A | 2

B | 3

2)第一点还意味着,如果要对rownum进行过滤,它将生成包含所有结果的临时表,然后对其进行过滤

因此,rownum不是拆分结果的好选择.尽管rowid看起来更好,但它也存在一些问题.

罗威德

如果查看ROWID de

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值