mysql 死锁-使用一致的顺序,一致的顺序是什么意思?

dsf9zpds  于 2023-01-16  发布在  Mysql
关注(0)|答案(1)|浏览(104)

https://dev.mysql.com/doc/refman/8.0/en/innodb-deadlocks-handling.html
修改一个事务中的多个表或同一个表中的不同组行时,每次都要以一致的顺序执行这些操作。这样,事务就会形成定义良好的队列,并且不会死锁。例如,将数据库操作组织到应用程序中的函数中,或调用存储例程,而不是编写多个类似的INSERT、UPDATE、和DELETE语句放在不同的位置。
我不明白为什么要用函数

k97glaaz

k97glaaz1#

使用函数并不是绝对必要的,但在许多代码项目中,使用较少的、经过良好审查的代码路径是有帮助的,这样可以鼓励数据任务的一致顺序。如果以相同的顺序获取锁,它们就不会死锁。
如果大型代码项目的替代方案是每个开发人员以任何顺序编写他们想要的任何SQL,那么他们使用不同顺序的SQL语句的风险就更高了,因为开发人员没有与其他开发人员协调。
理论上,您可以不使用函数实现同样的事情,但是这需要团队中的开发人员之间更好的沟通。

相关问题