MySQL性能优化总结-02

接着上一篇文章,继续总结MySQL性能优化。

3.缓存-架构优化

3.1缓存

  在系统里面有一些很慢的查询,要么是数据量大,要么是关联的表多,要么是计算逻辑非常复杂,这些查询每次会占用连接很长的时间。
  所以为了减轻DB压力,和提升查询效率,我们可以把数据存放到内存缓存起来,比如redis。
缓存适用于篇OLAP类型的业务,这些业务对实时性要求不高,不会频繁更新,例如报表数据,一次查询要半分钟甚至更长时间,但是一天只更新一次。
在这里插入图片描述

	运行独立的缓存服务,属于架构层面的优化。
	为了减少单台服务器的读写压力,在架构层面我们还可以做其他的优化措施。

3.2集群,主从复制

集群这样一种冗余可以提升可用性。
  集群必然会面临着不同节点数据一致性的问题。如果同时读写多个数据库节点,怎么让所有节点数据保持一致?
  这个时候需要用到复制技术(replication) ,被复制的节点为master,复制的节点为slave。slave本身也可以作为其他节点的数据来源,也就是级联复制。
在这里插入图片描述

	MySQL的主从复制基本实现:
	Mysql所有更新都会记录到server的binlog。
	有了这个binlog,slave会不断获取master的binlog文件,然后解析里面的sql语句,在slave上面执行一遍,保持主从数据一致。
	![在这里插入图片描述](https://img-blog.csdnimg.cn/20210129145611764.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2w0NzUxMjgzMDM=,size_16,color_FFFFFF,t_70#pic_center)

  这里面涉及到3个线程,连接到master获取binlog,并且解析binlog写入中继日志,这个线程叫做I/O线程。
   master上有一个log dump线程是用来发送binlog给slave的。
   slave的SQL线程是用来读取relay log 把数据写入数据库的。
  (主从配置和原理略)
   做了主从复制之后,我们只把数据写入master节点,读的请求可以分担到slave节点。
这种方案叫做读写分离。
在这里插入图片描述
  对于读多写少的项目,读写分离对于减轻主DB的访问压力很有用。
  在集群架构中,所有节点存储的都是一样的数据。如果单表存储的数据量过大的时候,增长迅速,一天几百万,单表查询性能会迅速下降。这个时候我们就要用到分布式架构中第二个重要手段:分片。就是把单个节点存储的数据分散到多个节点存储,减少存储和访问压力,这就是分表分库。

3.3分表分库

分表分库分为两类。
  垂直分库,减少并发压力。水平分表,解决存储瓶颈。
  垂直分库做法,把一个数据库,按照业务拆分成不同的数据库。
在这里插入图片描述
水平分库,把单张表按照一定规则分布到多个数据库。
在这里插入图片描述
  以上是架构层面的优化,可以用缓存,读写分离,分库分表。这些措施都可以减轻DB访问压力,提升效应效率。
  这一部分告一段落,下一部分是开发用的最多的,需要重点掌握的-sql优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值