最佳方法:使用Java 8在MySQL中檢索、加密和更新數百萬筆記錄
P粉211600174
2023-08-27 00:17:18
<p>我們有一個需求,需要從MySQL資料庫讀取大約1000萬筆記錄,對這些記錄進行加密,並將加密後的值更新回字段中。
如何以最有效率的方式實現這個需求。 </p>
<p><strong>1</strong>:使用AES_ENCRYPT從MySQL資料庫進行字段層級的加密:據我了解,AES_ENCRYPT在varbinary上可以有效地工作,但我們的字段只是varchar類型。
因此排除了這個選項。 </p>
<p><strong>2</strong>:先前在我們的一個應用程式中已經使用了Java中的Executor功能來實現批次插入。但記錄數不超過5萬筆。我們被要求使用類似的方法。因此排除了使用Spring Batch來實現。 </p>
<p>我正在尋找在Java 8 / MySQL資料庫中需要考慮的可能功能。 </p>
<p>Java 8:使用Executor進行多執行緒處理,使用CompletableFuture進行非同步處理,使用Streaming。 </p>
<p>MySQL:建立索引...</p>
VARBINARY
或BLOB
。SELECT MAX(LENGTH(col)) FROM tbl
)可以給出最大長度。PRIMARY KEY
來追蹤“上次停下來的位置”,如果可行的話。 (不要使用OFFSET
)。有關分塊的更多資訊:http://mysql.rjweb.org/doc.php/deletebig#deleting_in_chunks