作者ntpuisbest (阿龙)
看板Soft_Job
标题[请益] 重开机才会加速的转档
时间Fri Feb 21 18:10:13 2025
我工作上有一个需求
就是要将有点大的txt档案,大概1gb
没有重开机常常要七八个钟头
重开机大概只要三个钟头
转入资料库里面
每次转之前我也会先删掉旧的资料再插入
也没有设定什麽不必要的index
但我发现每次只要重开机
转档案入库的速度就会快很多
我是用java写的
我想也有自动回收机制
不确定是不是因为内存泄漏还是满了
才会导致重开机就ok
想问有什麽方法可以知道程式是哪里写不好
才会一样的写法
重开机就会变快
-----
Sent from MeowPtt on my iPhone
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.163.89 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1740132615.A.413.html
1F:推 jej: 档案从哪来?是随时随地一直写,一天写入一次吗? 02/21 18:32
2F:→ jej: 解法很多种,但问题叙述不足 02/21 18:32
3F:→ jej: 例如资料库如果是oracle,也可以考虑SQL loader 02/21 18:32
4F:→ jej: 或是用splunk收,在处理到资料库 02/21 18:32
5F:→ ntpuisbest: 档案是别人丢过来的,一天丢一次,写好才丢过来 资 02/21 18:48
6F:→ ntpuisbest: 料库是MSSQL 02/21 18:48
7F:推 ILoveAMD: mysql也有直接从档案汇入的介面 02/21 19:17
8F:→ MOONY135: 每处理多大档案就计时 02/21 19:49
9F:→ MOONY135: 一天一个档 一个档1gb? 感觉请对方直接整理成csv你手动 02/21 19:51
10F:→ MOONY135: import马上就结束了 02/21 19:51
11F:推 zonppp: txt 1gb...写那麽大干嘛? 02/21 20:10
12F:→ BlacksPig: 一笔资料就1gb? 02/21 20:20
13F:→ ntpuisbest: 一个月丢一次,为何那麽大因为是客户基本资料 02/21 20:44
14F:推 ILoveAMD: mysqlimport 指令查一下 02/21 20:53
15F:推 jej: 如果是已经整理好的客户资料 02/21 21:09
16F:→ jej: 用load data infile或是mtsqlimport 02/21 21:09
17F:→ jej: 会比你与java快十倍以上 02/21 21:09
18F:→ ntpuisbest: 不是一笔资料1gb,是一个档案1gb,一个档案大概300w 02/21 21:27
19F:→ ntpuisbest: 笔资料吧 02/21 21:27
20F:→ ntpuisbest: 他们可能不愿意弄成csv方式很传统是用定义第几个by 02/21 21:28
21F:→ ntpuisbest: te到第几个byte是第一个栏位,然後第几个到第几个 02/21 21:28
22F:→ ntpuisbest: 是第二个栏位这样 02/21 21:28
23F:→ kkkoooiii2: 开机时间拉长其他程式吃记忆体导致执行时吃了 swap? 02/21 21:30
24F:→ kkkoooiii2: 对 memory leak 有疑虑执行时就监看一下啊 02/21 21:32
25F:→ superpandal: 指令写的好都不会这麽慢 02/21 22:40
26F:嘘 B0988698088: 内存是什麽 02/21 22:46
27F:→ MoonCode: 重开机这麽快 就写个重开机的脚本不就好了 02/21 22:46
28F:推 ILoveAMD: 固定长度更简单 先awk 再import 去拉个屎就差不多了 02/21 22:46
29F:→ Apache: profiler 直接开起来看bottleneck在哪里啊== 02/21 22:58
30F:→ burgess: 去了解jvm记忆体的部分 02/21 23:46
31F:→ dalensona: java heap dump出来看看程式在干嘛? 02/21 23:47
32F:→ dalensona: 加上thread dump 看时间都花在甚麽程式上 02/21 23:48
33F:推 lchcoding: 进程式,加log,做时间分析 02/22 05:40
34F:→ lchcoding: 重开机前&後,各跑个两三分锺来比 02/22 06:01
35F:推 Lipraxde: 比起重开机会变快,处理完要几个小时是不是检查一下算 02/22 07:25
36F:→ Lipraxde: 法,还是哪个环节是 bottleneck 比较好...这时间拿去 t 02/22 07:25
37F:→ Lipraxde: raining LLM 估计模型都能学会怎麽说话了 02/22 07:25
38F:→ jhangyu: 连怎麽找bottle neck都不会…… 02/22 07:46
39F:推 jej: 那就是用script分隔好格式後给mysqlimport用 02/22 07:57
40F:→ jej: 速度仍然还是会比你用java快上10倍以上 02/22 07:57
41F:→ jej: 如果你们公司有个资考量因素,就更不应该让他成为档案 02/22 08:36
42F:→ jej: 可以的话,和对方系统直接资料库对传比较适合 02/22 08:36
43F:→ jej: 这个解决方案的解决方式又更多了 02/22 08:36
44F:推 ILoveAMD: 眼残看成mysql mssql的话查一下BULK INSERT 02/22 09:13
45F:推 gmoz: 确定一下是你转档部分慢 还是写SQL慢 02/22 09:57
46F:推 jack0204: 大概是一笔一笔写才会这样,浪费时间在连线上 02/22 12:18
47F:推 abc21086999: 该不会真的一笔一笔写进去吧... 02/22 14:17
48F:推 tw11509: 300w笔不算多吧,个人觉得执行这麽久跟做法有关 02/22 14:44
49F:推 xuzx: 会不会是写完档案没有close? 02/22 16:42
50F:→ cylee: 先转档成 CSV,再用 BULK INSERT 试试,才1GB 而已 02/23 10:22
51F:推 cancelpc: 一笔一笔tx,或一次tx都会很慢 02/24 17:19
52F:→ cancelpc: log也可以切到simple 02/24 17:20
53F:→ cancelpc: 去问chatgpt吧,推文难教 02/24 17:21
54F:→ cancelpc: 也可能java写差了,不是循序处理,而是整个load进来 02/24 17:22
55F:→ cancelpc: console跑完结束就释放,怕一堆人用ap server下跑,就可 02/24 17:24
56F:→ cancelpc: 能 02/24 17:24
57F:嘘 nanjolno: 内存 02/27 06:42
58F:推 qmailtw: 先搞清楚是 Java code 还是 SQL. 先把 sql mark 掉,看是 03/02 08:14
59F:→ qmailtw: 否还是慢 03/02 08:14