数据库分库分表的原因?

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

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

目录
相关文章
|
Java 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(中)
浅谈mysql数据库分库分表那些事
104 0
|
7月前
|
中间件 关系型数据库 Java
MySQL数据库分库分表方案
MySQL数据库分库分表方案
290 0
MySQL数据库分库分表方案
|
7月前
|
存储 缓存 监控
数据库分库分表
数据库分库分表
130 0
|
SQL 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(下)
浅谈mysql数据库分库分表那些事
87 0
|
SQL 关系型数据库 MySQL
浅谈mysql数据库分库分表那些事(上)
浅谈mysql数据库分库分表那些事
105 0
|
7月前
|
SQL 缓存 中间件
数据库为什么都设计为单表
数据库为什么都设计为单表
71 0
|
数据处理 数据库
数据库分库分表的原因
提高性能:当数据量庞大时,单一数据库可能无法满足高并发的需求,容易导致性能瓶颈。通过分库分表,可以将数据分散到多个数据库中,每个数据库只负责处理部分数据,从而提高整体系统的并发能力和响应速度。
74 0
|
存储 SQL cobar
浅谈数据库分库分表
在分库分表之前,就需要考虑为什么需要拆分。我们做一件事,肯定是有充分理由的。所以得想好分库分表的理由是什么。我们现在就从两个维度去思考它,为什么要分库?为什么要分表?
309 1
浅谈数据库分库分表
|
SQL 调度 数据库
分库分表后,数据库数据一致性问题如何解决? 下
分库分表后,数据库数据一致性问题如何解决? 下