JFinal 与MySQL的一个大量数据入库的问题

发布于 2021-12-03 06:59:27 字数 289 浏览 888 评论 3

JFinal大神,现在是这样一个情况,使用JFinal作为Web服务器,Mysql5.6为数据库服务器,Excel数据导入,数据量5-6万行,但每行记录需要插入两张相关联的表,使用Db.save方法,全部放到一个事务中提交。症状是:如果Web服务器与Mysql在同一物理机上,入库时间大约在20秒左右,但,如果Web服务器和MySQL服务器不在同一台机器上,通过LAN相连(网络非常畅通),则入库时间非常长,要好几分钟, 原因在哪里呢?是因为大量的非批量操作会导致网络上数据的频繁传输而影响了入库时间么?但如果使用batch的话,又无法得到主键值,从而无法入两个关联表,怎么解?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柳絮泡泡 2021-12-03 19:20:54

嗯,基本已经解决。还是用的batch方法,6W条excel,实际入库记录为12W,的batch时间大概1~2分钟,可以接受。

只是有两点比较麻烦,一是必须事先生成ID,并设置好两张表的关联,二是batch之前必须先锁表

夜血缘 2021-12-03 19:17:47

      网络传输会消耗一定的时间,可以先确定数据量的大小,然后通过纯 ftp 或的方式测试网络传输的时间长度。

     此外五六万行数据在本地导入需要 20 秒仍然是太长了,建议使用 Db.batch,并将 batchSize 设置为 2000 左右进行导入。至于主键值获取的问题,可以是分步骤查询并获取,准备好这五六万条数据所有数据以后,再调用 Db.batch

别低头,皇冠会掉 2021-12-03 19:10:34

五六万行的excel应该很大了,我之前做的用PHP做的导入,几千行就到了2-4M的大小。数据处理之后发送信息会增大,你的lan是多大的带宽,即使网络在好,如果是百兆的也有12M的速度,这还是理论的。一般采用大量数据插入我采用了异步插入,互不影响。你这个主要问题是网络产生的。LAN线路,网卡负载...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文