高性能Mysql优化方案

分库分表

表级别:
  垂直分表:
      最常用的分表策略,基本上业务设计上都会这么设计,将一个业务大表,拆分成一个业务主表和多个业务从表
      举例:商品表来说,其实查询最多的是商品的基础信息,什么商品对象的品牌信息,供应商信息等信息其实查询不多的.可以将基础信息存放一张表,然后各种从属信息放在一张或者多张从表里面
  水平分表:
    水平分表,一般都是单一表数据过多,导致查询效率变慢,根据规则,将单表分成多个数据结构一摸一样的表,数据根据规则进不同的表,常用的对id%n操作,其中是n是表数量.

库级别:
  垂直分库:
     分布式架构的数据库设计概念属于垂直分库,每个系统都有自己的库,将不属于本系统的业务字段拆分到其他系统,思想就是专库专职
    举例:订单信息维护在订单系统,但是每个订单的物流信息,物流配送信息,包括发货明细信息都应该是物流系统管理的.订单系统数据库不应该记录这些信息,
  水平分库:
    水平分表是解决但表过大问题,水平分库就是水平分表,表分在不同的数据库中,解决单库的存储压力问题.

读写分离

读写分离方案
就拿电商的商品来说表,其实修改的比例是很少的,基本上都是用于查询展示用的,这时候读性能就成了最大的瓶颈,如此就采用了读写分离的数据库架构模型,一主多从,主库读,从库读,不仅提高了效率还提升了高可用.但是写新能会降低,因为一次写操作之后还要造成同步从库的过程,如果数据要求一致性比较高,那么必须等从库同步完成,会对读造成阻塞

基本上互联网公司采用的架构是 水平分库+垂直分库(专库专职)+读写分离

水平分库分表 ID 解决方案

1.数据库自增层面,如果是两个数据库,一个id 从0 开始自增, 一个id从1开始自增,自增步数设为2
2.不用数据自增,业务层面解决问题,比如redis.incr ,雪花算法

你可能感兴趣的:(高性能Mysql优化方案)