1 前言
随着码龄的增长,对之前写的django+mysql深表遗憾(差的没边)。
本文先零碎记录,日后有机会再系统化。
2 一些经验
2.1 如果业务逻辑包含多条sql, 要考虑原子操作。
2.2 mysql的upsert操作
insert into A select a,b,c,d from B
ON DUPLICATE KEY UPDATE `c` = VALUES(`c`) , `d` = VALUES(`d`)
其中a为主键
- 如果主键a在表A不存在,则插入(a,b,c,d)到表A
- 如果主键a在表A存在,则在表A中更改主键为a的记录(修改c,d)
2.3 mysql的update + select 操作
UPDATE A inner join B on A.id = B.id set A.k = B.k
其中:将A表的字段k更新为B.k
2.4 数据库死锁
select * from information_schema.innodb_trx \G;
select concat('KILL ',id,';') from information_schema.processlist