PTT推薦

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

看板Soft_Job標題[請益] 重開機才會加速的轉檔作者
ntpuisbest
(阿龍)
時間推噓15 推:16 噓:1 →:39

我工作上有一個需求
就是要將有點大的txt檔案,大概1gb
沒有重開機常常要七八個鐘頭
重開機大概只要三個鐘頭
轉入資料庫裡面
每次轉之前我也會先刪掉舊的資料再插入
也沒有設定什麼不必要的index
但我發現每次只要重開機
轉檔案入庫的速度就會快很多
我是用java寫的
我想也有自動回收機制
不確定是不是因為內存洩漏還是滿了
才會導致重開機就ok
想問有什麼方法可以知道程式是哪裡寫不好
才會一樣的寫法
重開機就會變快
-----
Sent from MeowPtt on my iPhone


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.163.89 (臺灣)
PTT 網址

jej02/21 18:32檔案從哪來?是隨時隨地一直寫,一天寫入一次嗎?

jej02/21 18:32解法很多種,但問題敘述不足

jej02/21 18:32例如資料庫如果是oracle,也可以考慮SQL loader

jej02/21 18:32或是用splunk收,在處理到資料庫

ntpuisbest02/21 18:48檔案是別人丟過來的,一天丟一次,寫好才丟過來 資

ntpuisbest02/21 18:48料庫是MSSQL

ILoveAMD02/21 19:17mysql也有直接從檔案匯入的介面

MOONY13502/21 19:49每處理多大檔案就計時

MOONY13502/21 19:51一天一個檔 一個檔1gb? 感覺請對方直接整理成csv你手動

MOONY13502/21 19:51import馬上就結束了

zonppp02/21 20:10txt 1gb...寫那麼大幹嘛?

BlacksPig02/21 20:20一筆資料就1gb?

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

ILoveAMD02/21 20:53mysqlimport 指令查一下

jej02/21 21:09如果是已經整理好的客戶資料

jej02/21 21:09用load data infile或是mtsqlimport

jej02/21 21:09會比你與java快十倍以上

ntpuisbest02/21 21:27不是一筆資料1gb,是一個檔案1gb,一個檔案大概300w

ntpuisbest02/21 21:27筆資料吧

ntpuisbest02/21 21:28他們可能不願意弄成csv方式很傳統是用定義第幾個by

ntpuisbest02/21 21:28te到第幾個byte是第一個欄位,然後第幾個到第幾個

ntpuisbest02/21 21:28是第二個欄位這樣

kkkoooiii202/21 21:30開機時間拉長其他程式吃記憶體導致執行時吃了 swap?

kkkoooiii202/21 21:32對 memory leak 有疑慮執行時就監看一下啊

superpandal02/21 22:40指令寫的好都不會這麼慢

B098869808802/21 22:46內存是什麼

MoonCode02/21 22:46重開機這麼快 就寫個重開機的腳本不就好了

ILoveAMD02/21 22:46固定長度更簡單 先awk 再import 去拉個屎就差不多了

Apache02/21 22:58profiler 直接開起來看bottleneck在哪裡啊==

burgess02/21 23:46去瞭解jvm記憶體的部分

dalensona02/21 23:47java heap dump出來看看程式在幹嘛?

dalensona02/21 23:48加上thread dump 看時間都花在甚麼程式上

lchcoding02/22 05:40進程式,加log,做時間分析

lchcoding02/22 06:01重開機前&後,各跑個兩三分鍾來比

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

Lipraxde02/22 07:25法,還是哪個環節是 bottleneck 比較好...這時間拿去 t

Lipraxde02/22 07:25raining LLM 估計模型都能學會怎麼說話了

jhangyu02/22 07:46連怎麼找bottle neck都不會……

jej02/22 07:57那就是用script分隔好格式後給mysqlimport用

jej02/22 07:57速度仍然還是會比你用java快上10倍以上

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

jej02/22 08:36可以的話,和對方系統直接資料庫對傳比較適合

jej02/22 08:36這個解決方案的解決方式又更多了

ILoveAMD02/22 09:13眼殘看成mysql mssql的話查一下BULK INSERT

gmoz02/22 09:57確定一下是你轉檔部分慢 還是寫SQL慢

jack020402/22 12:18大概是一筆一筆寫才會這樣,浪費時間在連線上

abc2108699902/22 14:17該不會真的一筆一筆寫進去吧...

tw1150902/22 14:44300w筆不算多吧,個人覺得執行這麼久跟做法有關

xuzx02/22 16:42會不會是寫完檔案沒有close?

cylee02/23 10:22先轉檔成 CSV,再用 BULK INSERT 試試,才1GB 而已

cancelpc02/24 17:19一筆一筆tx,或一次tx都會很慢

cancelpc02/24 17:20log也可以切到simple

cancelpc02/24 17:21去問chatgpt吧,推文難教

cancelpc02/24 17:22也可能java寫差了,不是循序處理,而是整個load進來

cancelpc02/24 17:24console跑完結束就釋放,怕一堆人用ap server下跑,就可

cancelpc02/24 17:24