#1 問題描述# 2015-08-14 週五,線上樂購作活動,1元秒殺大閘蟹,庫存設置爲10 ,結果賣出去15個,而且線上存在髒數據,有些關聯表數據不全。mysql
執行原理:樂購調用訂單平臺下單,在訂單平臺調用促銷邏輯,在促銷邏輯中加限購邏輯。 #2 排查過程#spring
發現多個事務被合併成了一個事務執行,合併事務以後有啥問題?當合並事務以後,其中有一個事務執行失敗後,上層的Spring就沒法得知要回滾具體的哪個事務。 4. MyBatis的配置文件中,SqlSessionTemplate配置存在問題:【不正常】sql
#3 解決問題#數據庫
#4 問題總結# Mybatis內置的ExecutorType有3種,默認的是simple,該模式下它爲每一個語句的執行建立一個新的預處理語句,單條提交sql;而batch模式重複使用已經預處理的語句,batch模式若是和原spring事務一塊兒使用,將沒法回滾。安全