数据库分库分表

本文涉及的产品
PolarDB Agent Express,2核4GB
RDS AI 助手,专业版
云数据库 PolarDB MySQL 版,列存表分析加速 4核8GB
简介: 分库分表旨在减轻单库单表压力,提升查询性能。垂直切分按业务或字段拆分,降低耦合、减少IO;水平切分按数据逻辑分布存储,减小单表数据量,实现分布式部署。垂直适用于业务清晰的系统,水平适合单表数据量大场景,各有优劣,需结合实际选择。

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

相关文章
|
存储 缓存 负载均衡
数据库分库分表:提升系统性能的必由之路
数据库分库分表:提升系统性能的必由之路
421 1
|
5月前
|
SQL 关系型数据库 MySQL
【数据库进阶】为什么你的SQL查询这么慢?索引失效的7个常见场景
本文总结MySQL索引失效的7大常见场景:模糊查询以%开头、索引列参与计算或函数、隐式类型转换、违背最左前缀法则、OR条件使用不当、不等号查询及全表扫描风险,并结合EXPLAIN工具教你如何诊断与优化,提升查询性能。
|
7月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
5月前
|
SQL 关系型数据库 MySQL
聊下几次线上删除MySQL导致的故障
本文通过真实案例解析MySQL中删除大表数据的高危操作及底层原理,揭示DROP TABLE和批量DELETE引发的IO风暴与主从延迟问题,并提供6种可落地的优化方案,涵盖分批删除、并行复制、分区表设计等,助力研发与DBA安全高效处理大数据量删除。
403 2
聊下几次线上删除MySQL导致的故障
@Inherited它到底是什么?
@Inherited用于注解,使子类继承父类中标记该注解的元数据,仅适用于类继承,不适用于接口继承或类实现接口。
|
Java 关系型数据库 MySQL
面试官:聊聊你对分库分表的理解?
面试官:聊聊你对分库分表的理解?
351 3
|
消息中间件 Java 大数据
RocketMQ
【8月更文挑战第29天】RocketMQ
593 15