水平分表

简介: 水平分表

水平分表

按照水平分库的思路对他把PRODUCT_DB_X(商品库)内的表也可以进行水平拆分,其目的也是为解决单表数据量大的问题,如下图:
在这里插入图片描述

与水平分库的思路类似,不过这次操作的目标是表,商品信息及商品描述被分成了两套表。如果商品ID为双数,将此操作映射至商品信息1表;如果商品ID为单数,将操作映射至商品信息2表。此操作要访问表名称的表达式为商品信息[商品ID%2 + 1] 。

水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中。

它带来的提升是:

  1. 优化单一表数据量过大而产生的性能问题
  2. 避免IO争抢并减少锁表的几率

库内的水平分表,解决了单一表数据量过大的问题,分出来的小表中只包含一部分数据,从而使得单个表的数据量变小,提高检索性能。

总结

  1. 垂直分表:可以把一个宽表的字段按访问频次、是否是大字段的原则拆分为多个表,这样既能使业务清晰,还能提升部分性能。拆分后,尽量从业务角度避免联查,否则性能方面将得不偿失。
  2. 垂直分库:可以把多个表按业务耦合松紧归类,分别存放在不同的库,这些库可以分布在不同服务器,从而使访问压力被多服务器负载,大大提升性能,同时能提高整体架构的业务清晰度,不同的业务库可根据自身情况定制优化方案。但是它需要解决跨库带来的所有复杂问题。
  3. 水平分库:可以把一个表的数据(按数据行)分到多个不同的库,每个库只有这个表的部分数据,这些库可以分布在不同服务器,从而使访问压力被多服务器负载,大大提升性能。它不仅需要解决跨库带来的所有复杂问题,还要解决数据路由的问题(数据路由问题后边介绍)。
  4. 水平分表:可以把一个表的数据(按数据行)分到多个同一个数据库的多张表中,每个表只有这个表的部分数据,这样做能小幅提升性能,它仅仅作为水平分库的一个补充优化。

一般来说,在系统设计阶段就应该根据业务耦合松紧来确定垂直分库,垂直分表方案,在数据量及访问压力不是特别大的情况,首先考虑缓存、读写分离、索引技术等方案。若数据量极大,且持续增长,再考虑水平分库水平分表方案。

你学到了吗?

目录
相关文章
|
4天前
|
存储 大数据 数据库
分库分表知识总结(三)之水平分表
分库分表知识总结(三)之水平分表
50 0
|
4天前
|
存储 监控 数据库
分库分表知识总结(二)之垂直分表
分库分表知识总结(二)之垂直分表
52 1
|
10月前
|
存储 缓存 数据库
什么是垂直分表、垂直分库、水平分表、水平分库?
什么是垂直分表、垂直分库、水平分表、水平分库?
106 0
|
10月前
|
SQL 算法 Java
水平分库和水平分表
水平分库和水平分表
|
10月前
|
算法 Java 数据库连接
垂直分表和垂直分库
垂直分表和垂直分库
|
10月前
|
算法 Java 程序员
水平分库分表的策略
水平分库分表的策略
|
12月前
|
存储 数据处理 数据库
分表方案有哪些
分表方案有哪些
83 0
|
存储 大数据 数据库
水平分库
水平分库
90 0
水平分库
|
监控 数据库
垂直分库
垂直分库
66 0
垂直分库
|
存储 SQL 缓存
关于垂直分库,垂直分表,水平分库,水平分表
关于垂直分库,垂直分表,水平分库,水平分表
136 0
关于垂直分库,垂直分表,水平分库,水平分表