[请益] 重开机才会加速的转档

楼主: ntpuisbest (阿龙)   2025-02-21 18:10:13
我工作上有一个需求
就是要将有点大的txt档案,大概1gb
没有重开机常常要七八个钟头
重开机大概只要三个钟头
转入数据库里面
每次转之前我也会先删掉旧的资料再插入
也没有设定什么不必要的index
但我发现每次只要重开机
转档案入库的速度就会快很多
我是用java写的
我想也有自动回收机制
不确定是不是因为内存泄漏还是满了
才会导致重开机就ok
想问有什么方法可以知道程式是哪里写不好
才会一样的写法
重开机就会变快
作者: jej (晃奶大馬桶)   2025-02-21 18:32:00
档案从哪来?是随时随地一直写,一天写入一次吗?解法很多种,但问题叙述不足例如数据库如果是oracle,也可以考虑SQL loader或是用splunk收,在处理到数据库
楼主: ntpuisbest (阿龙)   2025-02-21 18:48:00
档案是别人丢过来的,一天丢一次,写好才丢过来 数据库是MSSQL
作者: ILoveAMD (AMD)   2025-02-21 19:17:00
mysql也有直接从档案汇入的接口
作者: MOONY135 (谈无欲)   2025-02-21 19:49:00
每处理多大档案就计时一天一个档 一个档1gb? 感觉请对方直接整理成csv你手动import马上就结束了
作者: zonppp (冷凉卡好)   2025-02-21 20:10:00
txt 1gb...写那么大干嘛?
作者: BlacksPig (Black Handsome s Pig)   2025-02-21 20:20:00
一笔资料就1gb?
楼主: ntpuisbest (阿龙)   2025-02-21 20:44:00
一个月丢一次,为何那么大因为是客户基本资料
作者: ILoveAMD (AMD)   2025-02-21 20:53:00
mysqlimport 指令查一下
作者: jej (晃奶大馬桶)   2025-02-21 21:09:00
如果是已经整理好的客户资料用load data infile或是mtsqlimport会比你与java快十倍以上
楼主: ntpuisbest (阿龙)   2025-02-21 21:27:00
不是一笔资料1gb,是一个档案1gb,一个档案大概300w笔资料吧他们可能不愿意弄成csv方式很传统是用定义第几个byte到第几个byte是第一个字段,然后第几个到第几个是第二个字段这样
作者: kkkoooiii2   2025-02-21 21:30:00
开机时间拉长其他程式吃内存导致执行时吃了 swap?对 memory leak 有疑虑执行时就监看一下啊
作者: superpandal   2025-02-21 22:40:00
指令写的好都不会这么慢
作者: B0988698088 (废文少女小円♥)   2025-02-21 22:46:00
内存是什么
作者: MoonCode (MoonCode)   2025-02-21 22:46:00
重开机这么快 就写个重开机的脚本不就好了
作者: ILoveAMD (AMD)   2025-02-21 22:46:00
固定长度更简单 先awk 再import 去拉个屎就差不多了
作者: Apache (阿帕契)   2025-02-21 22:58:00
profiler 直接开起来看bottleneck在哪里啊==
作者: burgess (墨绍臣)   2025-02-21 23:46:00
去了解jvm内存的部分
作者: dalensona (大仁)   2025-02-21 23:47:00
java heap dump出来看看程式在干嘛?加上thread dump 看时间都花在什么程式上
作者: lchcoding   2025-02-22 05:40:00
进程式,加log,做时间分析重开机前&后,各跑个两三分钟来比
作者: Lipraxde (Lipraxde)   2025-02-22 07:25:00
比起重开机会变快,处理完要几个小时是不是检查一下算法,还是哪个环节是 bottleneck 比较好...这时间拿去 training LLM 估计模型都能学会怎么说话了
作者: jhangyu (jhangyu)   2025-02-22 07:46:00
连怎么找bottle neck都不会……
作者: jej (晃奶大馬桶)   2025-02-22 07:57:00
那就是用script分隔好格式后给mysqlimport用速度仍然还是会比你用java快上10倍以上
作者: ILoveAMD (AMD)   2025-02-22 09:13:00
眼残看成mysql mssql的话查一下BULK INSERT
作者: gmoz ( This can't do that. )   2025-02-22 09:57:00
确定一下是你转档部分慢 还是写SQL慢
作者: jack0204 (Jarbar王朝)   2025-02-22 12:18:00
大概是一笔一笔写才会这样,浪费时间在连线上
作者: abc21086999 (呵呵)   2025-02-22 14:17:00
该不会真的一笔一笔写进去吧...
作者: tw11509 (John-117)   2025-02-22 14:44:00
300w笔不算多吧,个人觉得执行这么久跟做法有关
作者: xuzx (peko)   2025-02-22 16:42:00
会不会是写完档案没有close?
作者: cylee (Artisan)   2025-02-23 10:22:00
先转档成 CSV,再用 BULK INSERT 试试,才1GB 而已
作者: cancelpc (阿吉)   2025-02-24 17:19:00
一笔一笔tx,或一次tx都会很慢log也可以切到simple去问chatgpt吧,推文难教也可能java写差了,不是循序处理,而是整个load进来console跑完结束就释放,怕一堆人用ap server下跑,就可能
作者: nanjolno (nanjolno)   2025-02-27 06:42:00
内存
作者: qmailtw (爱八卦的主管滚远点)   2025-03-02 08:14:00
先搞清楚是 Java code 还是 SQL. 先把 sql mark 掉,看是否还是慢

Links booklink

Contact Us: admin [ a t ] ucptt.com