→ qrtt1: 你是打算多快!?要有個門檻出來,拿工具量一量,再來看要 10/25 00:32
→ qrtt1: 不要改它吧。你資料產出的那一端,到底每秒能生多少筆? 10/25 00:33
→ qrtt1: 你的消耗端 (mysql) 只要能承受比它高,就算達標了唄。 10/25 00:33
希望這樣子的排程工作能在2小時之內完成更新60萬筆資料。
==============================================================================
(60 * 10000) / (2 * 60 * 60) = 83.33333333333333
你開個 jmeter 試著 jdbc 寫入一下,它有超過每秒 84 組就算合用了
(或是你打算資料的方式去打)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.219.249
※ 文章網址: https://www.ptt.cc/bbs/java/M.1540454147.A.990.html
※ 編輯: qrtt1 (223.140.6.48), 10/25/2018 17:26:13
※ 編輯: qrtt1 (223.140.6.48), 10/25/2018 17:33:19
→ kentyeh: Java來更新資料當然可以,首先用多執行緒更新是必然的, 10/26 11:41
→ kentyeh: 如果你的資料是Insert,MySql有Buld Insert的語法可用, 10/26 11:41
→ kentyeh: 再來是應用preparedstatement來更新,因為你不會想要每一 10/26 11:41
→ kentyeh: 句語法都compile execution plan一次,最後就是Transact 10/26 11:41
→ kentyeh: ion的控制,如果是AutoCommit,每句都是一個Transaction 10/26 11:41
→ kentyeh: ,真的是會慢到哭出來,建議每更新1千次做為一個交易, 10/26 11:41
→ kentyeh: 大概這樣 10/26 11:41
真的不夠再來優化,不要為了想優化而優化啊R
而且 DB 與 Java 收資料的層要分開測,因為它們的 Update Per Seconds 是
MIN(DB 寫入速度, JAVA 收資料轉給 DB 寫入)
的結果,要優先調差得那一個。
不預設立場是誰快誰慢,也不過早優化。
→ adrianshum: 還有 JDBC 有batch update. 上面一堆都做完還是慢再 10/26 14:27
→ adrianshum: 來講multi-thread 吧 10/26 14:27
→ qrtt1: 樓上各位大大,不是我問的問題R 10/26 21:20
※ 編輯: qrtt1 (36.231.158.107), 10/26/2018 21:38:27
※ 編輯: qrtt1 (36.231.158.107), 10/26/2018 21:39:57
※ 編輯: qrtt1 (36.231.158.107), 10/26/2018 21:44:14
→ adrianshum: XD 我知道,有人在這裡回所以我也順便回一下而已 10/27 12:09