mysql数据库索引及事务demo
根据同一订单号同时在一个事务中对两条记录做了修改操作,导致锁表。
##数据初始化,插入模拟数据。
##窗口1 模拟
START TRANSACTION;
修改操作
COMMIT;
##窗口2 模拟
START TRANSACTION;
修改操作
COMMIT;
/** 超时报错
错误代码: 1205
Lock wait timeout exceeded; try restarting transaction
**/
##解决方法:表增加订单号,来源字段增加联合索引。
### 191229 复核 order_pay_trans_uidx,trx_inx trx_inx 查看索引记录
EXPLAIN
SELECT * FROM 表 WHERE order_no=191114460362 AND pay_kind=2002 AND trans_type='01' AND source=6;
# order_pay_trans_uidx,trx_inx trx_inx 查看索引记录
EXPLAIN
SELECT * FROM 表 WHERE order_no=191114460362 AND pay_kind=2002 AND trans_type='01' AND source=13;