如何快速儲存數量有380K之多的條目到MySQL?

banq發表於2016-09-28
假設你有380k個Java物件在記憶體中,你如何更快地將它們持久化儲存到MySQL中?

首先想到的辦法使用普通SQL透過JDBC儲存,據測試透過Spring JDBC儲存所有物件插入到資料庫MySQL需要6分鐘。

另外一個方案是使用“LOAD DATA INFILE”:
MySQL有LOAD DATA INFILE語句能讓你非常快地從一個檔案中載入大量資料然後儲存到指定的資料表中。

第一步首先將記憶體中Java物件儲存到磁碟上的CSV檔案,第二步使用 LOAD DATA INFILE匯入MySQL。

案例語句:

String sql = "LOAD DATA LOCAL INFILE '" + dataFilepath + "' into table " + tableName + " COLUMNS TERMINATED BY '" + INFILE_COLUMN_SEPARATION_CHAR + "' "; jdbcTemplate.execute(sql);
<p class="indent">

解釋如下:
dataFilepath: 代表儲存資料檔案路徑

tableName: 需要插入資料的表名

INFILE_COLUMN_SEPARATION_CHAR: 資料檔案中分隔符號,CSV是",".

使用CSV檔案匯入380K條目到MySQL中需要3秒。

How to Quickly Load 380K Items Into MySQL - DZone

相關文章