我们为什么要分库分表?
Hollis
共 4360字,需浏览 9分钟
· 2021-04-12
在文章开头先抛几个问题:
(1)什么时候才需要分库分表呢?我们的评判标准是什么?
(2)一张表存储了多少数据的时候,才需要考虑分库分表?
(3)数据增长速度很快,每天产生多少数据,才需要考虑做分库分表?
这些问题你都搞清楚了吗?相信看完这篇文章会有答案。
为什么要分库分表?
首先回答一下为什么要分库分表,答案很简单:数据库出现性能瓶颈
。用大白话来说就是数据库快扛不住了。
数据库出现性能瓶颈,对外表现有几个方面:
大量请求阻塞 在高并发场景下,大量请求都需要操作数据库,导致连接数不够了,请求处于阻塞状态。 SQL 操作变慢 如果数据库中存在一张上亿数据量的表,一条 SQL 没有命中索引会全表扫描,这个查询耗时会非常久。 存储出现问题 业务量剧增,单库数据量越来越大,给存储造成巨大压力。
数据库相关优化方案
SQL 调优
slow_query_log=on
long_query_time=1
slow_query_log_file=/path/to/log
select id, age, gender from user where name = 'AAA';
表结构优化
架构优化
硬件优化
分库分表详解
单应用单数据库
多应用单数据库
多应用多数据库
分表
每日表:只存储当天的数据。 每月表:可以起一个定时任务将前一天的数据全部迁移到当月表。 历史表:同样可以用定时任务把时间超过 30 天的数据迁移到 history表。
垂直切分:基于表或字段划分,表结构不同。 水平切分:基于数据划分,表结构相同,数据不同。
分库分表带来的复杂性
字段冗余:把需要关联的字段放入主表中,避免 join 操作; 数据抽象:通过ETL等将数据汇合聚集,生成新的表; 全局表:比如一些基础表可以在每个数据库中都放一份; 应用层组装:将基础数据查出来,通过应用程序计算组装;
UUID 基于数据库自增单独维护一张 ID表 号段模式 Redis 缓存 雪花算法(Snowflake) 百度uid-generator 美团Leaf 滴滴Tinyid
shardingsphere(前身 sharding-jdbc) Mycat
总结
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论
5000w+ 的大表如何拆?亿级别大表拆分实战复盘
前言笔者是在两年前接手公司的财务系统的开发和维护工作。在系统移交的初期,笔者和团队就发现,系统内有一张5000W+的大表。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。进一步的观察发现,这张表还在以每月600W+的数据持续增长,也就是说,不超
码农编程进阶笔记
0
BigDecimal 为什么可以保证精度不丢失?
来源:juejin.cn/post/7348709938023940136👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接
小哈学Java
0
纪不懂法,云浩止耕:要种地,先交钱
“我是建华镇党委副书记,我姓纪叫纪云浩,听懂了吗?等会车我们一定要扣走,地不属于你们的…”、“别找我,我不懂法“。。。“纪不懂法,云浩止耕”所说的就是最近非常火的内蒙古自治区通辽市开鲁县建华镇党委副书记、政法委员:纪云浩,而他还是一位90后,07年入伍,09年转业。。。春耕,农民的希望与挑战。又到一
机器学习算法工程师
0
Vite 4.3 为何性能爆表?
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群Vite 4.3 相比 Vite 4.2 取得了惊人的性能提升,下面和大家分享一下 Vite 4.3 性能大幅提升的幕后技术细节,深度阅读,全程高能
程序员成长指北
0
为什么我们公司还在用 Python 开发项目?
作者:哇哒嘻哇https://www.zhihu.com/question/278798145/answer/3416549119最近几年里,经常看到某些曾重度使用 Python 的大公司迁移成其它语言技术栈,但是,那些小公司/小团队的情况如何呢?一直很想了解那些仍在坚持使用 Python,且支撑业
机器学习算法与Python实战
0
只写后台管理的前端要怎么提升自己
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群本人写了五年的后台管理。每次面试前就会头疼,因为写的页面除了表单就是表格。抱怨过苦恼过也后悔过(虽然我现在已经心安理得的摆烂),但是站在现在的时间点
程序员成长指北
1
分库分表,可能真的要退出历史舞台了!
来源:https://www.jianshu.com/p/9131edd8fd2c👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦,
小哈学Java
1