海量數據-分批分段處理
前言
針對海量數據,在Mysql執行批量插入時,mysql5.7的客戶端默認是16M,服務端默認是4M,所以需要對數據進行分批分段處理。
代碼實現
List<String> updateData = new LinkedList<>();
updateData.add("1");
updateData.add("2");
updateData.add("3");
updateData.add("4");
updateData.add("5");
updateData.add("6");
updateData.add("7");
updateData.add("8");
updateData.add("9");
updateData.add("10");
//1.分頁數據信息
int totalSize = updateData.size(); //總記錄數
int pageSize = 3; //每頁N條
int totalPage = totalSize/pageSize; //共N頁
if (totalSize % pageSize != 0) {
totalPage += 1;
if (totalSize < pageSize) {
pageSize = updateData.size();
}
}
logger.info("循環批量更新的次數:{}",totalPage);
//2.分批次插入
for (int pageNum = 1; pageNum < totalPage+1; pageNum++) {
int starNum = (pageNum-1)*pageSize;
int endNum = pageNum*pageSize>totalSize?(totalSize):pageNum*pageSize;
List<String> part = updateData.subList(starNum,endNum);
System.out.println(part);
}
輸出結果
循環批量更新的次數:4
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
學習Java的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流羣,羣號碼:543120397 我們一起學Java!