回覆列表
  • 1 # 劉光華天津

    1、用分頁查詢的方式取

    先查詢出要處理的總資料量 count,然後假設每批要處理1000條,

    int size = 1000;

    int threadNum = count / size + 1;

    for (int i = 0; i < threadNum; i++) {

    Map paramMap = new HashMap();

    //分批查詢

    paramMap.put("PAGE_INDEX", i*size);

    paramMap.put("PAGE_SIZE", size);

    //用 paramMap 去分頁查詢資料庫

    }

    好處是:每一批資料基本都是數量相同的(除了最後一批)。

    缺點是:

    需要計算分頁,查詢時還要排序,同時在整個取資料的過程中:

    1、不能對每批獲取資料時的條件欄位進行更新操作

    2、用取模的方式取資料

    int size = 1000;

    int threadNum = count / size + 1;

    for (int i = 0; i < threadNum; i++) {

    Map paramMap = new HashMap();

    //分批查詢

    paramMap.put("threadNum", threadNum);

    paramMap.put("mod", i);

    //用 paramMap 去取模查詢資料庫

    //  SELECT * FROM `tableName` WHERE id % threadNum = mod ; 即查詢條件為 自增主鍵除以執行緒數餘數為當前遍歷到的 i

    }

    好處是:

    查詢時無需分頁、排序所以速度快,

    在整個取資料過程中,

    1、在一定程度上可以對每批查詢條件欄位進行更新;

  • 中秋節和大豐收的關聯?
  • 如果爐石增加更多的回合外響應會怎麼樣?