图文并茂解释水平分表,垂直分表,水平分库,垂直分库

文章目录

1.垂直角度(表结构不一样)

垂直分表:

将一个表字段拆分成多个表,每个表存储部分字段。好处是避免IO时锁表的次数,分离热点字段和非热点字段,避免大字段IO导致性能下降。原则是业务经常组合查询的字段一个表;不常用字段一个表;text、blob类型字段作为附属表

垂直分库:

根据业务将表分类放到不同的数据库服务器上,好处是避免表之间竞争同个物理机的资源,比如CPU/内存/硬盘/网络IO,原则是根据业务相关性进行划分,领域模型,微服务划分一般就是垂直分库。
db1专门存储用户的数据库,db2是专门处理订单的数据库,不同业务场景里面,不同库存储不同的表

2.水平角度(表结构一样)

水平分库:

把同个表的数据按照一定规则分到不同的数据库中,数据库在不同的服务器上。好处:是多个数据库,降低了系统的IO和CPU压力。原则是选择合适的分片键和分片策略,和业务场景配合;避免数据热点和访问不均衡、避免二次扩容难度大

用户表t_user变成t_user00,t_user01,t_user02分别存储到不同的数据库db0,db1,db2里面,举个例子:user表里面有id作为主键,可以通过id的规律来路由到不同的数据库,比如id%3,结果有0,1,2分别存储到db0,db1,db2里面

水平分表:

同个数据库内,把一个表的数据按照一定规则拆分到多个表中,对数据进行拆分,不影响表结构。好处是单个表的数据量少了,业务SQL执行效率高,降低了系统的IO和CPU压力。原则是选择合适的分片键和分片策略,和业务场景配合;避免数据热点和访问不均衡、避免二次扩容难度大

水平分表水平分库 的区别是同一张表分别存储在同一个数据库和存储在不同数据库的区别。

相关推荐
qq_4142565713 小时前
Redis如何解决哨兵通知延迟问题_优化客户端连接池动态刷新拓扑的订阅监听机制
jvm·数据库·python
m0_6765443813 小时前
MySQL如何配置不同级别的事务锁_调整innodb_locks_unsafe_for_binlog
jvm·数据库·python
dFObBIMmai13 小时前
mysql索引区分度不足如何解决_mysql多列索引组合优化
jvm·数据库·python
神明93113 小时前
SQL处理JOIN查询中数据倾斜的问题_散列连接键或增加缓存
jvm·数据库·python
m0_5913647313 小时前
c++ 实时傅里叶变换stft c++如何进行音频的频谱分析
jvm·数据库·python
2401_8323655213 小时前
MySQL无法修改数据表结构_检查磁盘空间与元数据锁
jvm·数据库·python
l1t13 小时前
类似 X-13ARIMA-SEATS 功能的 JDemetra+ 安装和使用
java·数据库·r语言
X566113 小时前
c++ aot编程 c++如何使用oneapi进行跨平台并行编程
jvm·数据库·python
2501_9010064713 小时前
如何按优先级控制 Flex 容器中子元素的截断顺序
jvm·数据库·python
Elastic 中国社区官方博客13 小时前
用于 JavaScript 和 TypeScript 的 ES|QL 查询构建器:流式、类型安全的查询构建
大数据·javascript·数据库·elasticsearch·搜索引擎·typescript·全文检索