解决系统并发问题

Posted by Liao on 2020-06-12

前言

之前开发了办公室预约系统,功能上基本实现了,现在需要提升性能问题,比如考虑并发情况,在多个人同时预约的时候,怎样解决并发问题呢?其实本质是要对事务上锁

1. 在MySQL方面提升

MySQL的性能分析

  • MySQL Query Optimizer(自带的优化器)
  • MySQL常见的瓶颈
    • CPU饱和:通常发生在数据装入内存或者从磁盘中读数据
    • 磁盘IO饱和:载入的数据远大于内存的容量
    • 服务器性能饱和:可以通过top/free/vmstat/iostat查看系统性能状态
  • Explain查询
    • MySQL提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化

主从复制

读写分离

索引优化

MySQL的悲观锁

MySQL的InooDB支持行级锁,当锁住某行数据时,其他进程不能对这行数据进行操作

2.消息队列(FIFO)缓存请求

把用户的请求放到消息队列中,用户把需求放在队列中,而系统通过队列处理需求,这样可以拦截大量的请求

3. Redis缓存

redis的WATCH监控: 在监控的事务,如果在事务执行期间被其他事务改动,则其它事务会被打断

4.设计分库分表

写在最后

以上是点滴思考和总结,将用在系统优化中,未完待续…

什么是消息队列