水平拆分是优化数据库大表的常见方式。
拆分方式
水平拆分的一种实现方式是使用数据库本身支持的分区表特性,即多个物理子表组成一个逻辑总表。
也可以显式地 (库内)分表,或 分库。
库内分表 可以缓解单表数据量过大的问题,但对于减轻数据库服务器压力的作用不大,因为所有请求还是在争用同一服务器的资源。这时可以采用 分库。
实际使用时也可以与 垂直拆分 结合。
(《MySQL大表优化方案》)
按照用户名首字母将用户分表分为两份:A~M 和 N~Z
数据拆分原则
- 能不分就不分!
-
分片规则要慎重选择,提前规划。数据的 增长模式、访问模式、数据分片关联问题 和 扩容问题 都需认真考虑。
按数据范围分片、枚举分片、一致性Hash分片 等都是比较容易扩容的方式。
对有时效性的数据,按时间范围分片 就是一种典型的策略。
-
分片尽量少;分片尽量均匀分布在多个数据节点上。
执行SQL时,涉及的分片越多,跨分片所消耗的资源也越多。
- 尽量不要让一个事务中的SQL跨分片。分布式事务非常难处理。
另外,可以适当增加冗余数据以减少 Join。
水平拆分的 优、缺点
优点:不存在单表数据量过大 和 请求高并发 的性能问题,提高了系统的 负载能力 和 稳定性。
缺点:
- 数据分片的事务一致性难以解决;
- 跨节点 Join 的逻辑复杂,性能差;
- 数据多次扩展 的 难度和维护量 非常大。
解决方案
根据实现分片访问逻辑的不同程序角色,可将解决方案分为两类:客户端模式 和 代理模式。
客户端模式
在客户端模式中,数据访问层被做成一个统一的SDK组件,比如一个 jar 包;各业务应用直接包含该SDK组件。如,Sharding-JDBC
优点:
- 应用直连数据库,可降低外部依赖系统不可用导致服务异常的风险。
- 集成成本低,无需额外运维的组件。
缺点:
- 可扩展性不高,可能无法满足复杂系统需求。
- 数据分片处理的压力在应用服务器上,有额外的风险。
代理模式
在代理模式中,由统一的代理服务整合数据分片和多数据源,向上层业务应用提供统一的服务。如,MyCat
优点:
- 可以处理非常复杂的需求,可扩展性高。
- 对上层应用比较透明,几乎不会增加任何额外负载。
缺点:
- 成本高,需部署维护独立的代理服务。
- 数据传输中多了一个代理环节,性能会降低,有额外的服务异常风险。
相关推荐
在IT领域,关系型数据库是数据存储和管理的核心工具,尤其在企业级应用中占据主导地位。本资料“关系型数据库性能体系设计和效率提升”着重探讨如何优化这些数据库的性能,以应对日益增长的数据量和复杂查询需求。...
分布式关系型数据库服务DRDS是一种基于数据库分片技术的分布式数据库中间件,它可以将一个大型的关系型数据库拆分成多个小的数据库实例,实现数据的水平拆分,从而分散负载,提升系统的处理能力和并发能力。...
数据库水平拆分是DRDS的关键特性,通过将大表分成多个小表,分散在不同的物理节点上,从而实现数据的水平扩展,解决单表容量问题。 6. **智能调度**: DRDS内置智能调度算法,根据业务负载动态调整数据分布和读写...
MongoDB是一种高性能、开源、无模式的分布式文件数据库,它属于非关系型数据库(NoSQL)的一种。在当今大数据和云计算环境下,MongoDB因其灵活性、可扩展性和高性能而备受青睐。"SOD.rar"是一个压缩包,其中包含了名...
1. **分布式数据库架构**:DRDS通过分库分表策略,将传统的关系型数据库横向拆分,解决了单机数据库在面对海量数据和高并发时的性能瓶颈问题。它支持水平扩展,可以根据业务需求动态添加或减少数据库实例。 2. **...
阿里云分布式关系型数据库DRDS(Distributed Relational Database Service)是一种专为大规模并发访问设计的数据库服务,它基于MySQL数据库引擎,旨在解决单机数据库在高并发、大数据量场景下的性能瓶颈问题。...
阿里云分布式关系型数据库DRDS(Distributed Relational Database Service)是一款旨在解决传统单机数据库面临的容量、访问容量和容灾问题的解决方案。随着业务的增长,单机数据库在存储、处理能力和灾备方面都可能...
分布式关系型数据库服务DRDS(Distributed Relational Database Service)是阿里云专有云企业版中的一个重要组件,旨在解决大规模数据库系统的扩展性和性能问题。DRDS V3.8.2的技术白皮书详细阐述了这一服务的核心...
阿里云分布式关系型数据库DRDS(Distribute Relational Database Service)是一种基于RDS(Relational Database Service)的服务,旨在解决大规模数据处理中的分库分表、读写分离、平滑扩容以及全局唯一ID等问题。...
阿里云专有云Enterprise版分布式关系型数据库服务DRDS V3.1.0 技术白皮书 DRDS( Distributed Relational Database Service)是一种分布式关系型数据库服务,旨在提供高可用性、可扩展性和高性能的数据库解决方案。...
DRDS是一款针对互联网场景设计的分布式数据库中间件,能够实现对关系型数据库的水平扩展,提升系统的并发处理能力和数据存储能力。 1. **什么是分布式关系型数据库服务DRDS** DRDS是基于分库分表策略的数据库解决...
阿里云分布式关系型数据库DRDS (Distributed Relational Database Service) 是一种云数据库服务,它构建于RDS之上,旨在解决大数据场景下的高并发、高可用和扩展性问题。DRDS通过分库分表、读写分离、平滑扩容以及...
阿里云分布式关系型数据库DRDS(Distributed Relational Database Service)是一款专为解决大数据场景下关系型数据库的扩展性和性能问题而设计的云服务。它基于分布式数据库技术,提供水平扩展、数据分片、读写分离...
阿里云分布式关系型数据库DRDS(Distributed Relational Database Service)是一种专为大规模并发访问设计的数据库服务,它基于MySQL数据库引擎,旨在解决单机数据库在高并发、大数据量场景下的性能瓶颈问题。...
通过规范化,可以将复杂的关系模式拆分成更简单的模式,从而达到优化数据库设计的目的。 #### 二、函数依赖与范式 **2.1 函数依赖** 函数依赖是描述关系模式中属性间依赖关系的一种方式。具体来说,如果对于关系...
分布式关系型数据库服务 DRDS(Distributed Relational Database Service)是阿里云专有云企业版提供的一个重要服务,它旨在解决大规模数据库的扩展性和性能问题。DRDS通过分库分表的技术,将大型单体数据库拆分为多...
DRDS是一种解决大数据场景下关系型数据库扩展性的服务,它通过分库分表、读写分离等技术,实现了对传统数据库的水平扩展,以满足高并发、大数据量的业务需求。 **核心知识点:** 1. **DRDS的分布式特性**:DRDS将...
分布式关系型数据库服务(DRDS,Distributed Relational Database Service)是阿里云专有云企业版中的一个重要组件,主要用于解决大规模数据处理和高并发访问的问题。DRDS是基于传统的关系型数据库,通过分布式架构...
**阿里云专有云企业版 V3.7.0 分布式关系型数据库服务 DRDS 开发指南** 阿里云的分布式关系型数据库服务 (DRDS) 是一款为企业级应用设计的高效、稳定、灵活的数据库解决方案。DRDS旨在解决单机数据库在高并发、大...