分库分表知识总结(三)之水平分表

简介: 分库分表知识总结(三)之水平分表

水平分库

经过垂直分库后,数据库性能问题得到一定程度的解决,但是随着业务量的增长,PRODUCT_DB(商品库)单库存储数据已经超出预估。粗略估计,目前有8w店铺,每个店铺平均150个不同规格的商品,再算上增长,那商品数量得往1500w+上预估,并且PRODUCT_DB(商品库)属于访问非常频繁的资源,单台服务器已经无法支撑。此时该如何优化?

当一个应用难以再细粒度的垂直切分,或切分后数据量行数巨大,存在单库读写、存储性能瓶颈,这时候就需要进行水平分库了,经过水平切分的优化,往往能解决单库存储量及性能瓶颈

概念:

把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上

它带来的提升:
  • 解决了单库大数据,高并发的性能瓶颈
  • 提高了系统的稳定性及可用性
  • 稳定性体现在 IO 冲突减少,锁定减少
  • 可用性指某个库出问题,部分可用
弊端:

由于同一个表被分配在不同的数据库,需要额外进行数据操作的路由工作,因此大大提升了系统复杂度

水平分表

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

概念:

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

它带来的提升:
  • 优化单一表数据量过大而产生的性能问题
  • 避免IO争抢并减少锁表的几率
目录
相关文章
|
网络协议 关系型数据库 MySQL
连接远程mysql数据库失败常见原因及解决办法
1. 没有开启 MySQL 的远程登陆帐号。 1.找到mysql数据库的user表。在user表中新建一条数据,设置User(username)和Host(开放访问MySQL的IP:例如123.118.17.201)以及登录密码。这样就设置了允许访问的用户名和IP地址(若想所有IP都可以访问,则可将Host设置为‘%’,但是这样很危险,不建议)。
9284 0
连接远程mysql数据库失败常见原因及解决办法
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
124784 0
|
存储 前端开发 API
DDD领域驱动设计实战-分层架构
DDD分层架构通过明确各层职责及交互规则,有效降低了层间依赖。其基本原则是每层仅与下方层耦合,分为严格和松散两种形式。架构演进包括传统四层架构与改良版四层架构,后者采用依赖反转设计原则优化基础设施层位置。各层职责分明:用户接口层处理显示与请求;应用层负责服务编排与组合;领域层实现业务逻辑;基础层提供技术基础服务。通过合理设计聚合与依赖关系,DDD支持微服务架构灵活演进,提升系统适应性和可维护性。
1176 10
|
网络协议 网络架构
【IP协议】解决 IP 地址不够用的问题(IP地址管理:动态分配、NAT、Ipv6)
【IP协议】解决 IP 地址不够用的问题(IP地址管理:动态分配、NAT、Ipv6)
530 1
|
消息中间件 存储 NoSQL
Redis使用ZSET实现消息队列使用总结一
Redis使用ZSET实现消息队列使用总结一
317 0
|
API
Vue3之watch和watchEffect实战总结
Vue3之watch和watchEffect实战总结
415 0
|
Dubbo Java 应用服务中间件
SpringBoot集成Dubbo启用gRPC协议
本文记录下SpringBoot集成Dubbo启用gRPC协议,以及与原生 gRPC 在代码编写过程中的区别。
518 0
|
监控 Java 关系型数据库
3千字带你搞懂XXL-JOB任务调度平台
一篇文章带你认识分布式任务调度平台XXL-JOB!
3千字带你搞懂XXL-JOB任务调度平台
|
存储 缓存 数据库
什么是垂直分表、垂直分库、水平分表、水平分库?
什么是垂直分表、垂直分库、水平分表、水平分库?
682 0