近日在公司專案中,使用到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...