分库分表
垂直分库
垂直分片,又称为纵向拆分
,它的核心理念是专库专用
用户数据在用户mysql服务器中
订单数据在订单mysql服务器中
垂直拆分可以缓解数据量和访问量带来的问题,但无法根治。如果垂直拆分之后,表中的数据量依然超过单节点所能承载的阈值,则需要水平分片来进一步处理。
垂直分表
垂直分表适合将表中某些不常用的列,或者是占了大量空间的列拆分出 去。
水平拆分
水平分片又称为横向拆分。
相对于垂直分片,它不再将数据根据业务逻辑分类,而是通过某个字段(或某几个字段)
**水平分表:**单表切分为多表后,新的表即使在同一个数据库服务器中,也可能带来可观的性能提升,如果性能能够满足业务要求,可以不拆分到多台数据库服务器,毕竟业务分库也会引入很多复杂性;
**水平分库:**如果单表拆分为多表后,单台服务器依然无法满足性能要求,那就需要将多个表分散在不同的数据库服务器中。
Apache ShardingSphere(程序级别和中间件级别)
MyCat(数据库中间件)