ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info]## ## **Innodb核心特性——事务** >[info]合理的应用Mysql事务机制 1. 【建议】事务中`INSERT|UPDATE|DELETE|REPLACE`语句操作的行数控制在2000以内,以及WHERE子句中IN列表的传参个数控制在500以内。 2. 【建议】批量操作数据时,需要控制事务处理间隔时间,进行必要的sleep,一般建议值5-10秒。 3. 【建议】对于有`auto_increment`属性字段的表的插入操作,并发需要控制在200以内。 4. 【强制】程序设计必须考虑“数据库事务隔离级别”带来的影响,包括脏读、不可重复读和幻读。线上建议事务隔离级别为`repeatable-read`。 5. 【建议】事务里包含SQL不超过5个(支付业务除外)。因为过长的事务会导致锁数据较久,MySQL内部缓存、连接消耗过多等雪崩问题。 6. 【建议】事务里更新语句尽量基于主键或`unique key`,如`update … where id=XX`; 否则会产生间隙锁,内部扩大锁定范围,导致系统性能下降,产生死锁。 7. 【建议】尽量把一些典型外部调用移出事务,如调用webservice,访问文件存储等,从而避免事务过长。 8. 【建议】对于MySQL主从延迟严格敏感的select语句,请开启事务强制访问主库。 ``` **一个成功事务的生命周期** begin; sql1 sql2 sql3 ... commit; **一个失败事务的生命周期** begin; sql1 sql2 sql3 ... rollback; \*\*结束事务的控制语句: commit 和 rollback \*\* ```