分布式分库分表
2023-01-12 15:20:22 0 举报
AI智能生成
分布式分库分表是一种数据库中间件技术,用于解决单一数据库表数据量过大、查询性能下降的问题。它将一张大表拆分成多个小表,分散到不同的数据库或服务器上,从而提高查询性能和系统可扩展性。同时,通过合理的分片策略,可以保证数据的均匀分布,避免热点数据导致的性能瓶颈。分布式分库分表技术在大型互联网应用中广泛应用,如电商、社交、金融等领域。
作者其他创作
大纲/内容
分布式分库分表
分库分表带来的问题
跨库关联查询
分布式事务
排序、翻页、函数计算问题
全局主键避重问题
分布式全局id
雪花算法
毫秒数+机器ID+流水号+符号位
a)使用 41bit 作为毫秒数,可以使用 69 年;
b)10bit 作为机器的 ID(5bit 是数据中心,5bit 的机器 ID),支持 1024 个 节点;
c)12bit 作为毫秒内的流水号(每个节点在每毫秒可以产生 4096 个 ID);
d)最后还有一个符号位,永远是 0。
优点
毫秒数在高位,生成的 ID 整体上按时间趋势递增;
不依赖第三方系统,稳定 性和效率较高,理论上 QPS 约为 409.6w/s(1000*2^12),并且整个分布式系统内不会 产生 ID 碰撞;
可根据自身业务灵活分配 bit 位。
不依赖第三方系统,稳定 性和效率较高,理论上 QPS 约为 409.6w/s(1000*2^12),并且整个分布式系统内不会 产生 ID 碰撞;
可根据自身业务灵活分配 bit 位。
缺点
不足就在于:强依赖机器时钟,如果时钟回拨,则可能导致生成 ID 重复。
uuid
UUID 是主键是最简单的方案,本地生成,性能高,没有网络耗时。
但缺点也很明显, 由于 UUID 非常长,会占用大量的存储空间;另外,作为主键建立索引和基于索引进行 查询时都会存在性能问题,在 InnoDB 中,UUID 的无序性会引起数据位置频繁变动,导 致分页。
myCat 逻辑库
分片算法
分片策略
连续分片
按自然月
离散分片
取模
特点:分布均匀,但是迁移工作量比较大
枚举分片
子主题
集群部署,读写分离
主从复制
binlog
Sharding-JDBC
阿里云drds[收费]
任务调度
quartz
elastic-job
自定义
服务启动自动注册到表
开启一个任务扫描表
将要执行的任务负载到一台服务器上执行
Sharding-JDBC
0 条评论
下一页