垂直切分:
垂直分表: 将原有表中的字段拆分成多个表
垂直分库: 微服务中盛行, 每个业务子系统有自己独立的数据库。
好处:结构清晰
缺点:增加系统复杂度,需要各个系统对外暴露接口。
水平切分:
水平分表: 表结构一致。 将原有记录按一定规律拆分到多个相同结构的表里面去。通常是用hash取模的方式来实现。
水平分库分表: 将相同表结构分拆到不同数据库里面去。
分库分表带来的问题和解决方案:
● 主键id的问题
采用单库单表的id生成规则,会出现主键冲突的情况。 即要兼顾索引性能、又要考虑唯一。通常的做法有以下几种:
1、借助redis来生成全局唯一的主键id
2、采用64 位UUID做唯一主键
方法2占用空间大,不建议使用。
考虑到路由,在主键信息里面需要包含机器id。
● join查询问题
列表查询不显示总页数,也不做多个表的union,只查询某个表的记录信息。
记录明细查询, 需要在应用程序代码层面上去做适配, 根据主键id去定位需要到哪台设备上去找数据。 前提是要求主键id需要包含机器id。
● 事务控制问题
采用二阶段提交的方式控制事务。涉及到服务服务化提供,需要注意服务提供的幂等性控制。
● 报表统计问题
现在流行的做法是离线分析、流式计算根据模板出报表。
分享到:
相关推荐
- **分库分表**: 根据业务逻辑将数据分布在多个数据库或表中。 - **主从架构**: 建立主从复制模型,实现读写分离。 **3.3 故障转移处理** - **主备切换**: 在主服务器故障时,能够快速切换至备用服务器。 - **数据...
- **分库分表**:将数据分散到多个数据库或表中,降低单个表的负载。 - **反范式设计**:适当引入冗余数据以减少关联查询,提高查询效率。 - **主从架构**:实现数据读写的分离,提高整体性能。 ##### 6.4 故障转移...
- 采用分库分表策略。 - 引入缓存机制减轻数据库负担。 - **分库&拆表方案**: - 根据数据访问模式合理划分数据库和表。 - **反范式设计(冗余结构设计)**: - 适当引入冗余数据以提高查询效率。 - **主从架构**:...
- 当单一数据库无法承载大量的数据和访问请求时,可以采用分库分表的方式来分散负载。 - 通过将数据分布在不同的数据库实例上,可以有效地提高系统的处理能力。 - **主从架构:** - 主从架构是一种常见的高可用...
### MySQL开发学习笔记知识点梳理 #### 一、基础知识概述 - **数据库定义**: 数据库(database)是用于存储数据的仓库,它...通过学习这些知识点,初学者可以建立起对MySQL的全面认识,并为进一步的学习打下坚实的基础。
5. **MySQL分库分表目的** - 解决单个数据库或表性能瓶颈问题,通过分散存储减轻单一数据库的压力。 6. **死锁及其解决方案** - 定义:两个或多个事务互相等待对方释放资源而陷入僵局。 - 解决方案: - 事务...
- 理解大型系统的设计原则,包括负载均衡、缓存、数据库分库分表等。 - 掌握分布式系统设计,如CAP定理、一致性哈希等概念。 - 能够根据业务需求设计系统架构,并解释设计的理由。 4. 数据库知识: - 熟悉关系...
Mycat,作为一款开源的分布式数据库中间件,以其强大的分库分表能力在大数据处理领域备受关注。本文将深入探讨Mycat v1.6.7.6版本的功能特性和应用场景,旨在帮助读者全面理解这一数据库中间件的精髓。 首先,我们...
- 分库分表可以将大量数据分散到多个数据库实例中,降低单个节点的压力。 **3.3 主从架构** - 主从复制可以实现读写分离,提高读取效率。 - 故障转移机制可以在主节点出现问题时自动切换到备用节点。 **3.4 缓存...
MySQL高性能解决方案之分库分表 数据库中间件初始Mycat 基于Mycat实习MySQL数据库读写分离 基于Mycat实战之数据库切分策略剖析 Mycat全局表、Er表、分片预警分析 Nginx 基于OpenResty部署应用层Nginx以及...