2016.06.01 ecshipper_dispatch接口部分上線享潜,出現(xiàn)了大大小小的問題困鸥,這主要是自己的問題嗅蔬。
跟舊接口匹配不完全
主要表現(xiàn)在:
1、返回的xml數(shù)據(jù)經(jīng)過格式化疾就,原有對(duì)接系統(tǒng)可能出現(xiàn)無法解析的問題澜术;
2、自己新增了一種錯(cuò)誤信息返回格式猬腰,導(dǎo)致原有對(duì)接系統(tǒng)無法解析鸟废;
SELECT + for update 防止并發(fā)數(shù)據(jù)出錯(cuò)
SELECT + for update俗稱悲觀鎖。
MySQL InnoDB默認(rèn)Row-Level Lock姑荷,所以只有「明確」地指定主鍵盒延,MySQL 才會(huì)執(zhí)行Row lock (只鎖住被選取的數(shù)據(jù)) ,否則MySQL 將會(huì)執(zhí)行Table Lock (將整個(gè)數(shù)據(jù)表單給鎖住)鼠冕。
1添寺、明確指定主鍵,并且有此數(shù)據(jù)懈费,row lock
2计露、明確指定主鍵,若查無此數(shù)據(jù)憎乙,無lock
3票罐、無主鍵,table lock
4泞边、主鍵不明確(如id>0)该押,table lock
更新:使用基于狀態(tài)機(jī)的樂觀鎖 UPDATE SET status=xxx WHERE id=xxx AND status = xxx。同時(shí)設(shè)置條碼池阵谚,在邏輯層加鎖沈善。
update語句在執(zhí)行時(shí)乡数,根據(jù)where條件行鎖id=xxx status=xxx的數(shù)據(jù),修改完成后根據(jù)先前的where條件就無法查找到被修改過的數(shù)據(jù)記錄闻牡。
LIKE, INSTR查詢結(jié)果不準(zhǔn)確净赴, 使用FIND_IN_SET替代
國(guó)家二字節(jié)碼與國(guó)家英文名、別名會(huì)有包含關(guān)系罩润,影響查詢結(jié)果玖翅。