MySQL存放超过几百万条数据后就有了性能问题
互连网应用:大多都是读多写少
垂直分库
将一个数据库按照业务分类拆分为多个数据库。比如订单的、会员的、商品的、用户的、后台的、、
垂直分表
有的业务场景下不需要用户的所有信息,不需要查询所有字段
将用户的部分信息拆分出来到子表中
总结
优点:
缺点:
水平分库
创建 10 个表,假设每个表最多存放 500 w条数据,根据用户 id 的最后一位决定使用那张表。
这样容量从原来的 500w 扩充到了 5000w。试想,随着业务规模扩大,总数据量超过 5000w,怎么做?
水平分表
分页怎么做?
总结
优点:
缺点:
垂直拆分:按字段进行拆分。少表多字段拆成多表少字段。
水平拆分:按照数据(内容)拆分。比如 id 尾号为 1 放在 db_1
库,id 尾号为 2 放在 db_2
库、、
前期垂直拆分,后期水平拆分。
前期主要做业务的拆分,分库更加直观
后期主要做数据的拆分。
mycat
、shardingsphere
、tddl
、mysql-proxy
等等
分类:
shardingsphere
、tddl
。在程序中实现mycat
、mysql-proxy
。JDBC 应用层分片,代表 shardingsphere
(之前叫 Sharding-JDBC
) ,底层原理:
以前的 shardings-jdbc 是基于 jdbc 的,只能通过 java 语言使用
目前支持 proxy分片 https://shardingsphere.apache.org/index_zh.html
GitHub:https://github.com/apache/shardingsphere
Proxy代理层分片,MyCat
比较:
JDBC应用层分片
优点:
缺点:
Proxy代理层分片
优点:
缺点:
https://www.bilibili.com/video/BV1pQ4y1r7FV?p=1
博客:
https://blog.csdn.net/azhuyangjun/article/details/86976568