php设计分布图,MySQL分表实现上百万上千万记录分布存储的批量查询设计模式[图]_MySQL...
我们知道可以将一个海量记录的 MySQL 大表根据主键、时间字段,条件字段等分成若干个表甚至保存在若干服务器中。
唯一的问题就是跨服务器批量查询麻烦,只能通过应用程序来解决。谈谈在Java中的解决思路。其他语言原理类似。
这里说的分表不是 MySQL 5.1 的 partition,而是人为把一个表分开存在若干表或不同的服务器。
1. 应用程序级别实现
见示意图
SelectThreadManager 分表数据查询管理器
它为分表的每个database or server 建立一个 thread pool
addTask() - 添加任务
stopTask() - 停止任务
getResult() - 获取执行结果
最快的执行时间 = 最慢的 MySQL 节点查询消耗时间
最慢的执行时间 = 超时时间
某个 ThreadPool 忙时候处理流程
1. 假如 ThreadPoolN 非常忙,(也意味 DB N 非常忙);
2. 新的查询任务到来,addTask(), 新的任务的一个thread加到ThreadPoolN任务排队中
3. 外层应用已经获得其他 thread 返回结果,继续等待
4. 外层应用等待超时的时间到,调用 stopTask() 设置该任务全部 thread 中的停止标志, 外层应用返回。
5. 若干时间后,ThreadPoolN取到该排队 Thread, 因为设置了停止位,线程直接运行完成。
2. JDBC 层实现
做一个 JDBC Driver 的包装,拦截 PreparedStatement, Statement 的 executeQuery()
然后调用 SelectThreadManager 完成
3. MySQL partition
MySQL 5.1 的 partition 功能由于单张表的数据跨文件,批量查询时候同样存在上述问题,不过它是在 MySQL 内部实现的,不需要外部调用者关心。其查询实现的原理应该大致类似。
但 partition 只解决了 IO 的瓶颈,并不能解决 CPU 计算的瓶颈,因此无法代替传统的手工分表方式。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php设计分布图,MySQL分表实现上百万上千万记录分布存储的批量查询设计模式[图]_MySQL...相关推荐
- MySQL百万级/千万级数据存储解决方案
MySQL 百万级/千万级数据存储解决方案 百万级.千万级数据处理,个人认为核心关键在于数据存储方案设计,存储方案设计的是否合理,直接影响到数据CRUD操作.总体设计可以考虑一下三个方面进行设计考虑: ...
- 17-1-数据处理思想和程序架构: 单片机stm32的flash保存数据优化方案(让擦写次数达到上百万至上千万次)
资料源码:https://gitee.com/yang456/OpenProgrammingModuleForMCU.git 点击加入群聊[单片机,物联网,上位机]: 说明1:知识从未如此性感. 烂程 ...
- ShardingSphere简单分库分表实现(根据int分库,根据时间分表)
1.背景 公司最近的项目开发中有一个数据库表,在给甲方部署试运行阶段发现有一个接口查询速度特别慢,然后经过排查发现,这个数据库表的的数据每天以6000-9000条的量激增,两个多月的时间已经60多万条 ...
- 京东一元抢宝业务分库分表实现策略
1. 京东一元抢宝 以下分享的链接为我在京东参与的主要的业务系统: 有幸参与了这个项目的始终,一个从无到有的过程: 原文是我的leader写的. 2. 上一张设计图 3. 原文访问地址 http:// ...
- mysql交互式查询_客户机程序5―MYSQL交互式查询程序[图]_MySQL
6.7 客户机程序5―交互式查询程序 让我们把迄今为止研究的诸多内容整理一下,编写一个简单的交互式客户机程序.它的功能包括可以进入查询,用通用目标查询处理程序process_query 执行查询,并用 ...
- mysql 分表后如何扩展_mysql扩展至分库分表
MySQL互联网Oracle企业应用数据结构 . 数据库的复制能解决访问问题,并不能解决大规模的并发写入问题,要解决这个问题就要考虑mysql数据切分了 数据切分,顾名思义,就是数据分散,将一台主机上 ...
- mysql分库主键_分库主键设计-Mysql
常见的两种方案,遍布网络: 第一种: replace方案,mysql解释:REPLACE的运行与INSERT很相像.只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE ...
- Word自动续表实现方法 不分表不手动加表头 一劳永逸实现续表 论文必备
Word自动续表实现方法 Author: fengclchn@outlook.com Date: 2023/05/22 原文: https://histonevon.top/archives/word ...
- MySQL中如何通过修改表实现约束的添加与删除
修改表实现约束的添加与删除 一.主键约束 添加主键约束 Alter table 表名 add primary key(列名) 例 将 emp 表中的 employee_id 修改为主键且自动增长: ...
最新文章
- php求二维矩阵的最大子矩阵,最大子矩阵-动态规划
- 后台开发人员面试内容——Redis非关系数据库(三)
- mysql 查看root_Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
- ex is not shell_我使用过的Linux命令之exit - 退出当前shell
- 公众号的Markdown排版利器:Md2All
- java毕业设计——基于java+jsp+Tomcat的电子书下载系统设计与实现(毕业论文+程序源码)——电子书下载系统
- magisk卸载内置软件_手机发烧友必备之 Magisk
- 敏捷开发模式下的BA岗
- org.jboss.netty.util.internal.jzlib.ZStream scanned from multiple locations: jar:
- Bean with name ‘‘ has been injected into other beans [] in its raw version as part of a circular ref
- 将一个文字的大集合按照第一个文字的首字母进行切分
- 7-33 统计素数并求和(20 分)
- 制作一个浪漫的表白网页
- 数字电路的一些基本知识
- 百练:4084 拓扑排序
- 狠!删库跑路!一行代码蒸发10亿人民币!
- nginx强制www
- 用python将小册子打印扫描的A3幅面双页乱码的PDF文件转换A4幅面顺码的PDF文件
- 概率的意义-深度理解
- Ubuntu虚拟机使用NAT连接 然后无法上网的情况