②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: ②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?


②⑩① 【MySQL】什么是分库分表?拆分策略有什么?


1. 性能瓶颈

单数据库存在问题

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈:

  • 1.IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。请求数据太多,带宽不够,网络IO瓶颈。
  • 2.CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源,请求数太多,CPU出现瓶颈。

分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。




2. 拆分策略

分库分表 的 拆分方式

  • 🚀垂直拆分
  • 垂直分库
  • 垂直分表


  • 🚀水平拆分
  • 水平分库
  • 水平分表




⚪ 垂直拆分

垂直分库

  • 以表为依据,根据业务将不同表拆分到不同库中去。
  • 特点:
  • ①每个库的表结构都不一样。
  • ②每个库的数据不一样。
  • ③所有库的并集是全量数据。

垂直分表

  • 以字段为依据,根据字段属性将不同字段拆分到不同表中。
  • 特点:
  • ①每个表的结构都不一样。
  • ②每个表的数据也不一样,一般通过一列(主键/外键)关联。
  • ③所有表的并集是全量数据。



⚪ 水平拆分

水平分库

  • 以字段为依据,按照一定策略,将一个库的数据拆分到多个库中。
  • 特点:
  • ①每个库的表结构都一样。
  • ②每个库的数据都不一样。
  • ③所有库的并集是全量数据。

水平分表

  • 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中去。
  • 特点:
  • ①每个表的表结构都一样。
  • ②每个表的数据都不一样。
  • ③所有表的并集是全量数据。




3. 实现技术

shardingJDBC

shardingJDBC技术 基于AOP原理,在应用程序中对本地执行的SQL进行拦截,解析、改写、路由处理。需要自行编码配实现,只支持java语言,性能较高。


MyCat

MyCat 是数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及shardingJDBC技术。




4. MyCat中间件

MyCat

MyCat是一个开源的、活跃的、分布式的数据库中间件 ,可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。MyCat中间件主要用于在大型数据库应用中实现数据库的分片和读写分离。它支持MySQL和MariaDB,并提供了水平分片、垂直分片、分布式事务等功能。以下是MyCat中间件的一些主要特点和功能:

  1. 分片和分布式架构:
  • 水平分片: MyCat支持水平分片,将数据水平划分为多个片段,每个片段可以存在于不同的物理节点上。
  • 垂直分片: 可以通过垂直分片将不同的表划分到不同的物理节点上,以提高查询性能和灵活性。
  1. 读写分离:
  • MyCat支持读写分离,可以配置多个只读节点,将读请求分发到这些节点上,从而提高整体查询性能。
  1. 分布式事务:
  • MyCat支持分布式事务,通过X/Open XA协议实现,确保在跨多个数据库节点的事务中保持一致性。
  1. SQL解析和路由:
  • MyCat能够解析SQL语句并将其路由到相应的分片节点,以确保数据操作被正确地分发到对应的数据库。
  1. 连接池管理:
  • MyCat提供了连接池管理功能,有效地管理数据库连接,降低系统的连接开销。
  1. 支持多租户:
  • MyCat支持多租户架构,使得不同的租户可以共享相同的物理资源,同时保持数据的隔离性。
  1. 动态扩展和缩减:
  • MyCat支持动态扩展和缩减节点,便于根据业务需求进行系统的水平伸缩。
  1. 监控和管理:
  • 提供了丰富的监控和管理工具,可以监测集群的状态、性能指标等,有助于及时发现和解决问题。
  1. 开源社区支持:
  • MyCat是一个开源项目,拥有活跃的社区,用户可以获得开源社区的支持和贡献。

MyCat中间件为大型数据库应用提供了灵活性、可扩展性和高性能,使得应用程序能够更好地应对大规模数据存储和访问的挑战。


MyCat的优势

  • MyCat优势:
  • ①性能可靠稳定。
  • ②强大的技术团队。
  • ③体系完善。
  • ④社区活跃。


MyCat 核心概念





相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
存储 关系型数据库 MySQL
MySQL数据库碎片化:隐患与解决策略
UUID作为主键可能导致MySQL存储碎片,影响性能。频繁的DML操作、字段长度变化和非顺序插入(如UUID)都会造成碎片。碎片增加磁盘I/O,降低查询效率,浪费空间,影响备份速度。建议使用自增ID,固定长度字段,并适时运行OPTIMIZE TABLE来减少碎片。
|
2月前
|
NoSQL 关系型数据库 MySQL
实时计算 Flink版操作报错之同步MySQL分库分表500张表报连接超时,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10天前
|
SQL 关系型数据库 MySQL
MySQL服务器性能调优的顶级策略14
【7月更文挑战第14天】MySQL服务器性能调优的顶级策略
31 12
|
9天前
|
关系型数据库 MySQL 调度
MySQL高级功能与优化策略深度探索
MySQL高级功能与优化策略深度探索
|
15天前
|
算法 关系型数据库 MySQL
MySQL分库分表
【7月更文挑战第11天】分库分表策略涉及数据源、库和表的划分,如订单表可能分布于多层结构中。面试时,主键生成是关键点。自增主键在不分库分表时适用,但在分表场景下会导致冲突。例如,按`buyer_id % 2`分两张表,自增ID无法保证全局唯一。因此,需要全局唯一且能自增的ID,如雪花算法,兼顾性能和高并发需求。
21 1
|
29天前
|
存储 关系型数据库 MySQL
mysql optimizer_switch : 查询优化器优化策略深入解析
mysql optimizer_switch : 查询优化器优化策略深入解析
|
1月前
|
SQL 关系型数据库 MySQL
MySQL性能优化实战:从索引策略到查询优化
MySQL性能优化聚焦索引策略和查询优化。创建索引如`CREATE INDEX idx_user_id ON users(user_id)`可加速检索;复合索引考虑字段顺序,如`idx_name ON users(last_name, first_name)`。使用`EXPLAIN`分析查询效率,避免全表扫描和大量`OFFSET`。通过子查询优化分页,如LIMIT配合内部排序。定期审查和调整策略以提升响应速度和降低资源消耗。【6月更文挑战第22天】
162 2
|
21天前
|
SQL 关系型数据库 MySQL
mysql面试之分库分表总结
mysql面试之分库分表总结
38 0
|
24天前
|
存储 关系型数据库 MySQL
MySQL索引设计原则与优化策略
MySQL索引设计原则与优化策略
|
29天前
|
关系型数据库 MySQL 数据库
深入探讨MySQL分表策略与实践
深入探讨MySQL分表策略与实践
28 0