数据库分库分表的原因?

简介: 分库分表通过减少单库单表负担来提升查询性能。垂直切分按业务耦合度将表或列分布于不同库或表中,减少数据量,优化性能。水平切分则按数据逻辑关系将表分散至多库多表,减小单表数据量,实现分布式处理。选择方式需根据具体需求决定。

分库分表的目的在于减少数据库单库单表的负担,提高查询性能,缩短查询时间。 分库分表分别水平切分和垂直切分。 垂直切分:分为垂直分库和垂直分表,其中垂直分库是指根据业务的耦合度,将关联度较低的不同表存储于不同的库中,类似于大系统拆分为小系统;垂直分表是指基于数据库表中的列,将不常用的列进行划分成新表,可以使单个表中的数据量变少减少跨页,使得单个页中字段更多,使内存能够加载更多的数据,提高命中率,减少磁盘IO,提高性能。 水平切分:水平切分是根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中,每个表中只包含一部分数据,从而使得单个表的数据量变小,达到分布式的效果。但只是库内分表,仅仅是解决了单表数据过大的问题,并没有把单表的数据分散到不同的物理机上,因此并不能减轻 MySQL 服务器的压力,仍然存在同一个物理机上的资源竞争和瓶颈,包括 CPU、内存、磁盘 IO、网络带宽等。 使用哪种方式分库分表需要依据情况而定,比如数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明了、容易实施的垂直切分必是首选。而如果数据库中的表并不多,但单表的数据量很大、或数据热度很高,这种情况之下就应该选择水平切分,水平切分比垂直切分要复杂一些,它将原本逻辑上属于一体的数据进行了物理分割,除了在分割时要对分割的粒度做好评估,考虑数据平均和负载平均,后期也将对项目人员及应用程序产生额外的数据管理负担。

目录
相关文章
|
7月前
|
存储 缓存 负载均衡
数据库分库分表:提升系统性能的必由之路
数据库分库分表:提升系统性能的必由之路
197 1
|
Java 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(中)
浅谈mysql数据库分库分表那些事
113 0
|
8月前
|
中间件 关系型数据库 Java
MySQL数据库分库分表方案
MySQL数据库分库分表方案
314 0
MySQL数据库分库分表方案
|
4月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
615 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
8月前
|
缓存 关系型数据库 Java
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
65 0
|
6月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之是否支持分库分表创建数据库
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(下)
浅谈mysql数据库分库分表那些事
99 0
|
SQL 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(上)
浅谈mysql数据库分库分表那些事
112 0
|
8月前
|
存储 缓存 负载均衡
数据库分库分表常见算法
数据库分库分表常见算法
|
8月前
|
存储 缓存 监控
数据库分库分表
数据库分库分表
144 0