關於Mybatis的Batch模式效能測試及結論

2021-08-09 07:34:22 字數 781 閱讀 1153

近日在公司專案中,使用到spring+mybatis的架構,特對mybatis的batch模式做了相關研究,得出以下結論:

1.mybatis內建的executortype有3種,預設的是******,該模式下它為每個語句的執行建立乙個新的預處理語句,單條提交sql;而batch模式重複使用已經預處理的語句,

並且批量執行所有更新語句,顯然batch效能將更優;

2.但 batch模式也有自己的問題,比如在insert操作時,在事務沒有提交之前,是沒有辦法獲取到自增的id,這在某型情形下是不符合業務要求的;

3. 在測試中使用******模式提交10000條資料,時間為18248 毫秒,batch模式為5023 ,效能提高70%;

4.通過走碼和研讀spring相關檔案發現,

在同一事務中batch模式和******模式之間無法轉換,由於本專案一開始選擇了******模式,所以碰到需要批量更新時,只能在單獨的事務中進行;

5.在**中使用batch模式可以使用以下方式:

//從spring注入原有的sqlsessiontemplate

@autowired

private sqlsessiontemplate sqlsessiontemplate;

public void testinsertbatchbytrue()  }

} catch (exception e)  finally  }

6.上述**沒有使用spring的事務,改動手動控制,

如果和原spring事務一起使用,將無法回滾,必須注意,最好單獨使用;

關於在深度學習中訓練資料集的batch的經驗總結

由於深度學習的網格很大,用來訓練的資料集也很大。因此不可能一下子將所有資料集都輸入到網路中,便引入了batch size的概念,下面總結自己兩種常用的呼叫batch的方法 1 使用tensorflow,tf.train.batch 2 offset offset batch size len ima...

關於mybatis的模糊查詢

今天用到了mybatis的模糊查詢,在這裡簡單總結下,與大家共享 1 第一種用法 select from ups sys role where role name like concat concat 2 第二種用法 在傳遞引數的時候,加上 controller層 listroleinfos aut...

關於mybatis的批量修改

listproductskulist new arraylist 商品sku物件 productskuvo productskuvo null for int i 0 i jsonarray.size i productskuvo new productskuvo productskuvo.sets...