Skip to content

Instantly share code, notes, and snippets.

@Linuxpizi
Created August 8, 2020 11:55
Show Gist options
  • Save Linuxpizi/4e1430be709565aa2ad679efa2c87bb3 to your computer and use it in GitHub Desktop.
Save Linuxpizi/4e1430be709565aa2ad679efa2c87bb3 to your computer and use it in GitHub Desktop.
数据库高并发操作

数据库高并发热点数据更新

想要数据库的性能足够高,巧妙的设计很重要,事务的操作范围要足够的小。

在大并发的情况下跨网络多次交互,就不可避免的由于网络的延迟、丢包等原因导致事务的执行时间变长,出现雪崩的概率就会大大增加。

大并发数据库的操作原则就是事务操作尽量少跨网络交互,一旦跨网络使用事务尽量使用乐观锁来解决,少用悲观锁,尽量缩短当前 session 持有锁的时间。

下面为自己的思考,减少数据库锁的范围和时间

  1. 转化 updateinnser

这里主要是使用 insert on duplicate key update

如果有需要边界处理的情形,例如扣费。如果客户余额充足进行扣费处理 转化思路 select from update group by

  1. 消除 select from update

为了保证数据的一致性会加上 for update ,但是也意味着数据库将 block

可以先思考,把需要处理的数据由大的范围缩小为小的范围,然后再对数据进行处理。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment