接口上线问题

2016.06.01 ecshipper_dispatch接口部分上线,出现了大大小小的问题,这主要是自己的问题。

跟旧接口匹配不完全

主要表现在:
1、返回的xml数据经过格式化,原有对接系统可能出现无法解析的问题;
2、自己新增了一种错误信息返回格式,导致原有对接系统无法解析;

SELECT + for update 防止并发数据出错

SELECT + for update俗称悲观锁。
MySQL InnoDB默认Row-Level Lock,所以只有「明确」地指定主键,MySQL 才会执行Row lock (只锁住被选取的数据) ,否则MySQL 将会执行Table Lock (将整个数据表单给锁住)。

1、明确指定主键,并且有此数据,row lock
2、明确指定主键,若查无此数据,无lock
3、无主键,table lock
4、主键不明确(如id>0),table lock

更新:使用基于状态机的乐观锁 UPDATE SET status=xxx WHERE id=xxx AND status = xxx。同时设置条码池,在逻辑层加锁。

update语句在执行时,根据where条件行锁id=xxx status=xxx的数据,修改完成后根据先前的where条件就无法查找到被修改过的数据记录。

LIKE, INSTR查询结果不准确, 使用FIND_IN_SET替代

国家二字节码与国家英文名、别名会有包含关系,影响查询结果。

你可能感兴趣的:(接口上线问题)