[2025.2.3 MySQL学习] 分库分表

分库分表

问题分析

image

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





拆分策略

image

1、垂直拆分

image

image

2、水平拆分

image

image






实现技术

  • shardingJDBC:基于AOP原理,在应用程序中对本地执行的SQL进行拦截、解析、改写、路由处理。需要自行编码配置实现,只支持java语言,性能较高
  • MyCat:数据库分库分表中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及前者
  • 配置环境:
    image





基本概念

image

  • MyCat当中不存数据





应用场景

  • 垂直

image

  • 水平

image






水平分表的Mycat分片规则

  • 范围分片:根据指定字段与其配置的范围与数据节点的对应情况,来决定数据属于哪一个分片
  • 取模分片:根据指定的字段值和节点数量进行求模运算,根据运算结果进行分片
  • 一致性hash:计算指定字段的hash值,根据hash值进行分片,所谓的一致性hash,是指相同的哈希因子计算值总是被划分到相同的分区表中,不会因为分区节点的增加而改变原来数据的分区位置
  • 枚举分片:通过在配置文件中配置可能的枚举值,指定数据分配到不同节点上,适用于按照某些指定字段进行分片
  • 指定应用:运行阶段由应用自主决定路由到哪个分片,直接根据字符子串(必须是数字)计算分片号
  • 固定分片hash算法:类似于十进制的求模运算,但是为二进制的操作,例如:取id的二进制低10位与1111111111进行位&运算,特点:
    • 如果是求模,连续的值,分别分配到各个不同的分片,但是此算法会将连续的值可能分配到相同的分片,降低事物处理的难度
    • 可以均匀分配,也可以非均匀分配
    • 分片字段必须为数字类型
  • 字符串hash解析算法:截取字符串中指定位置的子字符串,进行hash算法,算出分片
  • 按(天)日期分片
  • 按自然月进行分片





Mycat中间件原理

原理

image

管理

  • Mycat默认开通2个端口,可以在server.xml中进行修改:mysql -h xxx.xxx.xxx.xxx -p 9066 -uroot -pxxxxx
  • 8066数据访问端口,即进行DML和DDL操作
  • 9066数据库管理端口,即Mycat服务管理控制功能,用于管理Mycat整个集群状态

image

Mycat-eye

  • 是对mycat-server提供监控功能,不局限于对mycat-server使用,通过IJBC连接对Mycat、MySQL监控,监控远程服务器(目前仅限于linux系统)的cpu、内存、网络、磁盘
  • 运行过程中需要依赖zookeeper,因此需要先安装zookeeper
posted @   Luna-Evelyn  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示