mysql的引擎是InnoDB
你有没有遇到过这种场景, 你有一个收款表, 表里边有一个余额字段 , 然后 这个余额字段 频繁的update,我们假设很多人往你余额里边充钱, 当然也有很多人在你这里取钱,也就是说这行余额不断的加减运算,不断的更新。那么 高并发下 会 锁表 是不是会非常慢(你这一行属于是典型的热点行数据) 那么我们怎么提高 并发能力呢。
先说一个比较好的办法,就是 你把这个余额 分成好几行,然后 让每个往里存钱的 或者取钱的事务 随机访问 余额行就可以,这样就能提高并发能力, 比较好的做法就是 id ,每次更新余额字段的时候 通过id随机访问不同的行,这样就OK。
当然办法不止一个,我看到 也有人说你公司有mysql专家 能改mysql 源码 可以在 访问同一行的时候 排队 从而减少死锁检测。不过这种办法并不每个公司都适合。