Mysql--->(优化)主从复制,读写分离,分库分表

数据库优化

1、换数据库

2、优化SQL

3、读写分离

4、分库分表

1、主从同步,读写分离

一次插入,多次查询

Mysql    proxy 代理进行

 2、分库分表

分库

分表

垂直:

垂直:

电商:订单表,会员表,商品表

user表:userbase、userinfo(主键user id 作唯一表示)

水平:

水平:

一个库分成两个 一个表分成两个表

 垂直

1、每个库(表)的结构都不一样

2、每个库(表)的数据至少有一列是一样的

3、每个库(表)的并集就是全部数据

优点: 

1、拆分后业务清晰

2、数据维护简单,按业务不同在不同机器上

缺点:

1、单表数据量大,读写压力大

2、受业务来决定或被限制一个业务会影响数据库瓶颈

3、部分业务无法关联,提高开发复杂度

水平

1、每个库(表)的结构都一样

2、每个库(表)的数据都是一样的

3、每个库(表)的并集就是全部数据

 优点:

1、单库的数据保持在一定的量,有助于性能提高

2、提高了系统的稳定性和负载能力

3、切分的表的结构相同,程序改造较少

缺点:

1、扩容难,增加库计算规则发生改变

2、拆分规则很难抽象出来

3、分片事务的一致性问题部分业务的无法关联,只能通过Java接口去调用

问题

ACID 分布式事务

维护成本

跨库的查询问题

分布式全局唯一ID

分库分表 中间件

proxy代理层

mycat、shardingproxy

支持跨语言

JDBC应用层

shardingjdbc

支持多种数据库

原文地址:https://www.cnblogs.com/springxian/p/14355990.html