[請益] 重開機才會加速的轉檔

看板Soft_Job (軟體人)作者 (阿龍)時間10月前 (2025/02/21 18:10), 編輯推噓15(17240)
留言59則, 25人參與, 10月前最新討論串1/1
我工作上有一個需求 就是要將有點大的txt檔案,大概1gb 沒有重開機常常要七八個鐘頭 重開機大概只要三個鐘頭 轉入資料庫裡面 每次轉之前我也會先刪掉舊的資料再插入 也沒有設定什麼不必要的index 但我發現每次只要重開機 轉檔案入庫的速度就會快很多 我是用java寫的 我想也有自動回收機制 不確定是不是因為內存洩漏還是滿了 才會導致重開機就ok 想問有什麼方法可以知道程式是哪裡寫不好 才會一樣的寫法 重開機就會變快 ----- Sent from MeowPtt on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.163.89 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1740132615.A.413.html

02/21 18:32, 10月前 , 1F
檔案從哪來?是隨時隨地一直寫,一天寫入一次嗎?
02/21 18:32, 1F

02/21 18:32, 10月前 , 2F
解法很多種,但問題敘述不足
02/21 18:32, 2F

02/21 18:32, 10月前 , 3F
例如資料庫如果是oracle,也可以考慮SQL loader
02/21 18:32, 3F

02/21 18:32, 10月前 , 4F
或是用splunk收,在處理到資料庫
02/21 18:32, 4F

02/21 18:48, 10月前 , 5F
檔案是別人丟過來的,一天丟一次,寫好才丟過來 資
02/21 18:48, 5F

02/21 18:48, 10月前 , 6F
料庫是MSSQL
02/21 18:48, 6F

02/21 19:17, 10月前 , 7F
mysql也有直接從檔案匯入的介面
02/21 19:17, 7F

02/21 19:49, 10月前 , 8F
每處理多大檔案就計時
02/21 19:49, 8F

02/21 19:51, 10月前 , 9F
一天一個檔 一個檔1gb? 感覺請對方直接整理成csv你手動
02/21 19:51, 9F

02/21 19:51, 10月前 , 10F
import馬上就結束了
02/21 19:51, 10F

02/21 20:10, 10月前 , 11F
txt 1gb...寫那麼大幹嘛?
02/21 20:10, 11F

02/21 20:20, 10月前 , 12F
一筆資料就1gb?
02/21 20:20, 12F

02/21 20:44, 10月前 , 13F
一個月丟一次,為何那麼大因為是客戶基本資料
02/21 20:44, 13F

02/21 20:53, 10月前 , 14F
mysqlimport 指令查一下
02/21 20:53, 14F

02/21 21:09, 10月前 , 15F
如果是已經整理好的客戶資料
02/21 21:09, 15F

02/21 21:09, 10月前 , 16F
用load data infile或是mtsqlimport
02/21 21:09, 16F

02/21 21:09, 10月前 , 17F
會比你與java快十倍以上
02/21 21:09, 17F

02/21 21:27, 10月前 , 18F
不是一筆資料1gb,是一個檔案1gb,一個檔案大概300w
02/21 21:27, 18F

02/21 21:27, 10月前 , 19F
筆資料吧
02/21 21:27, 19F

02/21 21:28, 10月前 , 20F
他們可能不願意弄成csv方式很傳統是用定義第幾個by
02/21 21:28, 20F

02/21 21:28, 10月前 , 21F
te到第幾個byte是第一個欄位,然後第幾個到第幾個
02/21 21:28, 21F

02/21 21:28, 10月前 , 22F
是第二個欄位這樣
02/21 21:28, 22F

02/21 21:30, 10月前 , 23F
開機時間拉長其他程式吃記憶體導致執行時吃了 swap?
02/21 21:30, 23F

02/21 21:32, 10月前 , 24F
對 memory leak 有疑慮執行時就監看一下啊
02/21 21:32, 24F

02/21 22:40, 10月前 , 25F
指令寫的好都不會這麼慢
02/21 22:40, 25F

02/21 22:46, 10月前 , 26F
內存是什麼
02/21 22:46, 26F

02/21 22:46, 10月前 , 27F
重開機這麼快 就寫個重開機的腳本不就好了
02/21 22:46, 27F

02/21 22:46, 10月前 , 28F
固定長度更簡單 先awk 再import 去拉個屎就差不多了
02/21 22:46, 28F

02/21 22:58, 10月前 , 29F
profiler 直接開起來看bottleneck在哪裡啊==
02/21 22:58, 29F

02/21 23:46, 10月前 , 30F
去瞭解jvm記憶體的部分
02/21 23:46, 30F

02/21 23:47, 10月前 , 31F
java heap dump出來看看程式在幹嘛?
02/21 23:47, 31F

02/21 23:48, 10月前 , 32F
加上thread dump 看時間都花在甚麼程式上
02/21 23:48, 32F

02/22 05:40, 10月前 , 33F
進程式,加log,做時間分析
02/22 05:40, 33F

02/22 06:01, 10月前 , 34F
重開機前&後,各跑個兩三分鍾來比
02/22 06:01, 34F

02/22 07:25, 10月前 , 35F
比起重開機會變快,處理完要幾個小時是不是檢查一下算
02/22 07:25, 35F

02/22 07:25, 10月前 , 36F
法,還是哪個環節是 bottleneck 比較好...這時間拿去 t
02/22 07:25, 36F

02/22 07:25, 10月前 , 37F
raining LLM 估計模型都能學會怎麼說話了
02/22 07:25, 37F

02/22 07:46, 10月前 , 38F
連怎麼找bottle neck都不會……
02/22 07:46, 38F

02/22 07:57, 10月前 , 39F
那就是用script分隔好格式後給mysqlimport用
02/22 07:57, 39F

02/22 07:57, 10月前 , 40F
速度仍然還是會比你用java快上10倍以上
02/22 07:57, 40F

02/22 08:36, 10月前 , 41F
如果你們公司有個資考量因素,就更不應該讓他成為檔案
02/22 08:36, 41F

02/22 08:36, 10月前 , 42F
可以的話,和對方系統直接資料庫對傳比較適合
02/22 08:36, 42F

02/22 08:36, 10月前 , 43F
這個解決方案的解決方式又更多了
02/22 08:36, 43F

02/22 09:13, 10月前 , 44F
眼殘看成mysql mssql的話查一下BULK INSERT
02/22 09:13, 44F

02/22 09:57, 10月前 , 45F
確定一下是你轉檔部分慢 還是寫SQL慢
02/22 09:57, 45F

02/22 12:18, 10月前 , 46F
大概是一筆一筆寫才會這樣,浪費時間在連線上
02/22 12:18, 46F

02/22 14:17, 10月前 , 47F
該不會真的一筆一筆寫進去吧...
02/22 14:17, 47F

02/22 14:44, 10月前 , 48F
300w筆不算多吧,個人覺得執行這麼久跟做法有關
02/22 14:44, 48F

02/22 16:42, 10月前 , 49F
會不會是寫完檔案沒有close?
02/22 16:42, 49F

02/23 10:22, 10月前 , 50F
先轉檔成 CSV,再用 BULK INSERT 試試,才1GB 而已
02/23 10:22, 50F

02/24 17:19, 10月前 , 51F
一筆一筆tx,或一次tx都會很慢
02/24 17:19, 51F

02/24 17:20, 10月前 , 52F
log也可以切到simple
02/24 17:20, 52F

02/24 17:21, 10月前 , 53F
去問chatgpt吧,推文難教
02/24 17:21, 53F

02/24 17:22, 10月前 , 54F
也可能java寫差了,不是循序處理,而是整個load進來
02/24 17:22, 54F

02/24 17:24, 10月前 , 55F
console跑完結束就釋放,怕一堆人用ap server下跑,就可
02/24 17:24, 55F

02/24 17:24, 10月前 , 56F
02/24 17:24, 56F

02/27 06:42, 10月前 , 57F
內存
02/27 06:42, 57F

03/02 08:14, 10月前 , 58F
先搞清楚是 Java code 還是 SQL. 先把 sql mark 掉,看是
03/02 08:14, 58F

03/02 08:14, 10月前 , 59F
否還是慢
03/02 08:14, 59F
文章代碼(AID): #1dk547GJ (Soft_Job)
文章代碼(AID): #1dk547GJ (Soft_Job)