前段时间,项目组有需求需要对一个千万级的表进行数据同步,目标并不复杂,将用户的一张表数据同步到我们自己的数据库中,当然,中间需要关联几张自己的表数据。
一开始,客户考虑到安全等因素,只提供数据表导出的csv文件,大小约为700多M,数据量1200w。LZ脑子一热,不假思索使用spring+ibatis开始搞起了代码,一个小应用大概用了一上午编写完毕,当时LZ为自己的小成就还沾沾自喜。但在当天下午的实际测试时,LZ被着实打击了一番,系统根本支撑不下去,本机测试数据量达到100多W的时候,系统内存溢出,LZ试图增加环境变量,增加内存配置,数据在达到200w的时候,已经占用系统全部内存,LZ怀疑是自己的笔记本不给力,将代码部署到linux主机,开始使用默认最大2G内存,跑出来的效果和笔记本相当,没有内存溢出,程序直接假死。LZ主动将内存配置改为最大配置16G,想碰碰运气,系统最终在700W当口败下阵来。
LZ没有气馁,想到了折中的办法,一次性加载数据吃不消,我就拆开了加载,每次加载10W条数据,看到数据一条条的入到数据库里,LZ很是欣慰,当时临近下班,LZ将程序部署linux后让它后台执行,打算第二天早上看执行结果。第二天的结果让LZ哭笑不得,13个小时,愣是没跑完,数据还在蜗牛般爬行,在程序运行了16个小时后,1200w数据终于入库完毕。
功能完成了,但是同步效率奇差,肯定无法满足客户需要。LZ开始怀疑ibatis的性能问题了,都说ibatis是JDBC封装而来的,性能势必会有损耗。LZ花了个把小时把代码改造了一番,重新部署一番后开始了第二轮测试,结果还是有进步的,很明显,数据同步的速度有所加快,但是依然不能让人满意,LZ测算了一下跑完程序依然要8-9个小时。
程序一边跑,LZ已经开始琢磨新的思路,自然而然想到的当然是多线程,没错,单一线程执行确实还是太慢了,LZ打算使用JDK的线程池,线程数量20个,每个线程数据量10W左右,程序最大内存2G,这样程序实时数据200W,当然由于使用了spring加载properties,所有参数都改为了可配置,根据部署环境的大小进行调配。到这个时候LZ也发现一个问题,由于数据源并非来自表结构,而是csv文件,想要多线程读取数据有些麻烦,且如果出现错误不方便定位数据位置。LZ最终牺牲了程序启动后的3分钟时间,将1200W条数据大小总量700M的csv文件,拆分成120个,每个6,7M大小的小文件,再使用多线程进行操作入库。部署linux环境后进行了第三轮调试,80分钟即可跑完程序,性能已经完全达到客户要求范围,将内存调整为最高16G以后,40分即可跑完程序,不过为了linux单板不挂机,安全考虑还是使用最高2G内存。
LZ不敢自诩自己的思路和做法是最好的,或许有人可以把效率提高到半个小时甚至10分钟也说不准,但是通过这个需求的持续改进和最终的结果,LZ想让大家明白,想法永远比技术本身值钱,活学活用才能有创新和突破,程序可以改变世界,只要你肯动脑筋。
相关推荐
在这个特定的场景中,OGG被用来实现实时地从Oracle RAC(Real Application Clusters)环境中的源数据同步到大数据平台Kafka,最终目的地是Kafka集群中的Kudu数据库。Oracle RAC环境通常用于高可用性和负载均衡,而...
### 大数据ETL同步工具演示教程 #### DataX数据同步框架 在当前的大数据处理领域,**DataX**作为一种高效、稳定的数据同步框架扮演着重要角色。它主要用于实现不同数据源之间的离线数据同步。这里提到的不同数据源...
铁路站车Wi-Fi运营服务系统大数据文件同步的研究与实现.pdf
sqlserver 数据同步 mysql 实现数据库的实时更新
【发明名称】:基于大数据同步平台的可靠性监控方法、装置、设备 【摘要】:本发明涉及一种针对大数据同步平台的可靠性监控方案,旨在提高故障检测的及时性和数据传输的可靠性。方法包括获取同步平台源端和目标端...
mybatis,mysql,maven,springboot,springsecurity,rabbitmq,solr,dubbo,zookeeper,同步与异步 前后端交互; 代码部署: mysql8.7,rabbitmq,solr,zookeeper运行于 wsl2 ~fedora35, idea2019 ~jdk8 sql表为常用的dept
这份“6kV和10kV高压电机技术大数据表”详细列举了不同型号高压电机的主要技术参数,包括功率、同步转速、额定电流、效率、功率因数以及堵转特性,便于我们深入理解高压电机的工作原理和性能指标。 1. **功率**:...
《万亿级大数据同步中台设计与优化》 在数字化时代,大数据已经成为企业核心竞争力的关键因素。冯赞锋在《万亿级大数据同步中台设计和优化》中深入探讨了如何构建和优化这种大规模数据同步中台,以满足业务的快速...
时间同步有两种方法,这里选用更优的方法2. 1. 使用crontab命令使得mini2和mini3同步mini1的时间 2. 使用ntp进行同步,而ntp更精确! 一共三台机器: mini1 192.168.117.81 mini2 192.168.117.82 mini3 192.168....
我感觉很不错的宝贝,现在和大家分享,希望能够帮到大家,如果你需要可以下载看看,很适合喜欢研究技术的人员
NIFI1.21.0_大数据同步处理模板_MysqlToMysql增量同步_单表_处理日期_空值数据.zip 是作者自己实际项目中用到的,自己学习后制作的NIFI流程模板文件,导入后可以直接使用, 实现了Mysql到mysql数据库的增量CDC数据的...
大数据平台搭建中时间同步需要的文档,可以在ambari中使用通过
总结来说,6kV和10kV高压电机的技术大数据表提供了丰富的电机性能信息,包括功率、转速、电流、效率、功率因数、堵转特性和最大转矩倍数等,这些都是电机选型和运行维护的重要依据。通过对比分析不同型号电机的数据...
mongo和大数据同步工具,Mongo同步数据到Hive;Hive同步数据到Mongo中。 即使Mongo中没有建立索引,速度以然不受影响。 如何使用 导入(import) 当增量导入mongo时,可以配置--mongo-import-condition参数, 当以...
同时,亚马逊在PC端和移动端的数据同步,进一步提升了其大数据的整合和应用能力。 在《大数据导论》中,4.1.1章节阐述了大数据的跨界年度,强调了大数据对各行各业的影响,跨越了传统的信息与通信技术(ICT)边界。...
总的来说,阿里巴巴大数据技术路径展示了从数据采集、存储、处理到应用的全面流程,并强调了在不同场景下如何有效地同步和管理数据,以满足实时性、一致性和效率的需求。这不仅涉及到工具的选用,也涵盖了数据处理...
总之,Python在数据同步领域提供了强大的工具和灵活性,无论是简单的文件同步还是复杂的跨系统大数据同步,都能通过Python有效地实现。`datasync`项目可能就是利用了这些工具和策略,为用户提供了一种高效的数据一致...
+ ID+后台数据直通车抽数,用户数据同步,相关表权限申请。 + 为确保数据准确性,给算法模型训练提供数据模型,以便训练模型更准确。 + 数据范围来源明确,hive 数据模型建立,达人资询数据开发。 + 近 30 天...
控制模块是大数据平台的核心组件之一,负责控制数据的访问和处理,包括表分布策略、SQL模块、查询执行策略、执行器、计划节点、元组操作、表达式计算、投影操作等。 SQL模块是大数据平台的另一个核心组件,负责处理...