假设有连个库,一个是生产库,一个是备份库,在一个特定的时间定,比较备份库与生产库的数据是否一致,用Java实现怎么样做效率比较高?

在单进程的情况下,原来做过这样的设计:利用conCurrentHashMap来实现比对。

一个线程负责从A库抽取数据,每行数据构造成一个Hash对,Key采用:主键+列相加的Hashcode,value采用key来做,线程B负责从B库抽取数据,每行数据构造成一个Hash对,Key采用:主键+列相加的Hashcode,value采用key来做,同时,B线程抽取出来的数据首先与HashMap A中的数据进行比对,假如在A容器中存在,说明这条记录两个库中相同,那么A的Map中可以remove 这条记录,B可以直接丢弃这条记录,不要放在conCurrentHashMap B中;假如在A中不存在,那么A则数据不变保留,B则放入自己的HashMap B中,为了减少数据在Hash容器中的堆叠量,可以设置线程的优先级A为最高,也可以让B延迟启动。

    key = builderKey.toString() + builderColumn.toString().hashCode();if (Main.hashMapA1.get(key) != null) {// System.out.println("removeA1:" + key);Main.hashMapA1.remove(key);} else {// System.out.println("B1:" + key);Main.hashMapTempB.put(key, builderKey.toString());}

当A从表格中把数据抽取完成后,B可能还没有完成,那么需要等待两个线程都处理完成之后,才能进行下一轮操作

由于受环境的限制,两边的数据存放的顺序和取出来的速度不一定就按预想的那样执行,所以,当两个线程都抽取完成后,还需要对两个Map进行一次比对,相同的则Remove,不同的保留。

比对结束后,这个时候Map A里面存的是B里面没有的, Map B里面存的是A里面没有的,当时最好的测试结果是240万条每分钟。

注意在抽取过程中setFetchSize的设置,这个值默认好像是10条,设置的越大,executeQuery的时间就越长。

一种表格数据比对的方法相关推荐

  1. excel如何把多张表合并成一个表_如何将多个excel表格合并成一个_excel多表合并到一种表格的方法...

    Excel是我们日常办公经常要用到的工具,有时候我们会制作非常多的Excel表格,为了方便管理,我们需要将这些表格合并到一起,那么如何将多个excel表格合并成一个呢?相信很多朋友都不太清楚,那么今天 ...

  2. layui table 弹出层刷新_layui 关闭open弹出框 刷新table表格页面的方法

    layui 关闭open弹出框 刷新table表格页面的方法 如下所示: 保存后刷新table表格 源码 //弹出框 layer.open({ type: 2, shadeClose: true, s ...

  3. arcgis两点之间连线_ArcGIS中实现一种流向地图的方法

    其实早在2011年,Esri的制图专家Mamata Akella就发表了一篇Blog,介绍在ArcGIS中实现一种流向地图的方法[1],来展示2011年Esri用户大会的参会者来源,如下图所示. 这里 ...

  4. php html转成数组,PHP_php将HTML表格每行每列转为数组实现采集表格数据的方法,本文实例讲述了php将HTML表格每 - phpStudy...

    php将HTML表格每行每列转为数组实现采集表格数据的方法 本文实例讲述了php将HTML表格每行每列转为数组实现采集表格数据的方法.分享给大家供大家参考.具体如下: 下面的php代码可以将HTML表 ...

  5. 逐步认识C#四种判断相等的方法

    C#有四种判断相等的方法?不少人看到这个标题,会对此感到怀疑.事实上确是如此,.Net提供了ReferenceEquals.静态Equals,具体类型的Equals以及==操作符这四个判等函数.但是这 ...

  6. Unity(游戏)中五种数据存储的方法

    Unity(游戏)中五种数据存储的方法 一.PlayerPrefs unity3d提供了一个用于本地持久化保存与读取的类-------PlayerPrefs.工作原理很简单,以键值对的形式将数据保存在 ...

  7. 计算机表格要学些什么,几个Excel表格的制作方法

    人靠衣装马靠鞍,那么Excel表格靠什么呢?靠表头啊!今天小编就来分享几个Excel表格的制作方法,既有实用的,也有"艺术"的-- 斜线表头制作 Excel中制作表格非常简单,选取 ...

  8. 升级版剪刀石头布(表格的处理方法)

    石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.甲和乙非要玩花里胡哨的升级版剪刀石头布. 升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势: 钢 ...

  9. 交互设计师:讨论几种处理问题的方法

    当一个项目开始时,交互设计师如何开始工作呢?需要使用什么工具和方法来解决问题呢?尽管很多交互设计师坚持以用户为中心(UCD)这一种设计方法,这根本是不正确的. 有几件事,是一个新的交互设计师启动项目时 ...

  10. 常用的表格检测识别方法-表格内容识别方法

    常用的表格检测识别方法 3.3 表格内容识别方法 表格识别的研究主要涉及两个方面,一方面是对单元格内的文本进行识别,这一步通常是在确定单元格区域后,利用较为稳定的光学字符识别方法(OCR)来实现,这一 ...

最新文章

  1. 如何对以破折号/连字符开头的字符串进行grep?
  2. Java字符串的子串
  3. JS报错修改日记(1):Uncaught ReferenceError: showQRcode is not defined
  4. 【人物】互联网教父KK:对未来要有自信,未来是我们的
  5. macbook双网卡路由
  6. 深入学习c++--智能指针(三) unique_ptr
  7. CodeForces - 1521D Nastia Plays with a Tree(树上最小路径覆盖)
  8. 【Pytorch】interpolate==>上下采样函数
  9. 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密|原创
  10. [原]SyntaxError: invalid syntax 小问题
  11. 《Renewable Energy》论文格式
  12. 联想微型计算机改win7,联想win10改win7如何实现?联想电脑Win10改Win7方法详解
  13. linux otl mysql_Linux下用OTL操作MySql(包含自己封装的类库及演示样例代码下载)...
  14. 程序员增加收入的实用之道
  15. 百度云不限速下载(官方渠道,无风险)
  16. Python+Vue计算机毕业设计餐饮管理系统qpa33(源码+程序+LW+部署)
  17. 王者荣耀战力查询小程序源码下载-支持安卓ios微信和QQ战力查询支持打包成APP
  18. APP的包名和签名获取工具
  19. 一起读Apache ServiceComb
  20. linux 析构函数地址获取_c语言中有析构函数吗

热门文章

  1. 计算机技术与软件专业技术资格(水平)考试
  2. python做项目看板_基于pyecharts搭建BI看板
  3. spring AOP的配置
  4. np.ones(),np.zeros(), np.empty(),np.full(),np.ones_like() 基本用法
  5. NLTK文本分割器是如何工作的
  6. 线性代数笔记4.3 齐次线性方程组
  7. 2017年总结与展望
  8. 【MATLAB】构建WS小世界网络
  9. 《Domain-shift Conditioning using Adaptable Filtering …… for Robust Chinese Spell Check》阅读记录
  10. linux进入bios设置超线程,从BIOS开启超线程的方法