MySQL分表实现上百万上千万记录分布存储的批量查询设计模式

我们知道可以将一个海量记录的 MySQL 大表根据主键、时间字段,条件字段等分成若干个表甚至保存在若干服务器中。

唯一的问题就是跨服务器批量查询麻烦,只能通过应用程序来解决。谈谈在Java中的解决思路。其他语言原理类似。

这里说的分表不是 MySQL 5.1 的 partition,而是人为把一个表分开存在若干表或不同的服务器。

1. 应用程序级别实现

见示意图

SelectThreadManager 分表数据查询管理器

它为分表的每个database or server 建立一个 thread pool

addTask() - 添加任务

stopTask() - 停止任务

getResult() - 获取执行结果

最快的执行时间 = 最慢的 MySQL 节点查询消耗时间

最慢的执行时间 = 超时时间

时间: 2024-12-09 14:10:13

MySQL分表实现上百万上千万记录分布存储的批量查询设计模式的相关文章

mysql分表实现方法详解

什么是分表,从表面意思上看呢,就是把一张表分成N多个小表 mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表结构文件. 1.[root@BlackGhost test]# ls |grep user 2.alluser.MRG 3.alluser.frm 4.user1.MYD 5.user1.MYI 6.user1.frm 7.user2.MYD 8.user2.MYI 9.user2.frm 1,做

MySQL交叉表实现分享_Mysql

现整理解法如下: 数据样本: create table tx(  id int primary key,  c1 char(2),  c2 char(2),  c3 int ); insert into tx values (1 ,'A1','B1',9), (2 ,'A2','B1',7), (3 ,'A3','B1',4), (4 ,'A4','B1',2), (5 ,'A1','B2',2), (6 ,'A2','B2',9), (7 ,'A3','B2',8), (8 ,'A4','B2

asp.net通过单表实现多文件上传代码

 代码如下 复制代码 #region    上传文件到数据库和服务器         public void FN_UpFiles()         {             //遍历File表单元素             HttpFileCollection files = HttpContext.Current.Request.Files;             try             {                 for (int iFile = 0; iFile <

我是如何在SQLServer中处理每天四亿三千万记录的

首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. 项目背景 这是给某数据中心做的一个项目,项目难度之大令人发指,这个项目真正的让我感觉到了,商场如战场,而我只是其中的一个小兵,太多的战术,太多的高层之间的较量,太多的内幕了.具体这个项目的情况,我有空再写相关的博文出来. 这个项目是要求做环境监控,我们暂且把受监控的设备称为采集设备,采集设备的属性

SQL Server处理四亿三千万记录大型项目实录

项目背景 这个项目是要求做环境监控,我们暂且把受监控的设备称为采集设备,采集设备的属性称为监控指标.项目要求:系统支持不少于10w个监控指标,每个监控指标的数据更新不大于20秒,存储延迟不超过120秒.那么,我们可以通过简单的计算得出较理想的状态--要存储的数据为:每分钟30w,每个小时1800w,也就是每天4亿3千两百万.而实际,数据量会比这个大5%左右.(实际上大部分是信息垃圾,可以通过数据压缩进行处理的,但是别人就是要搞你,能咋办) 上面是项目要求的指标,我想很多有不少大数据处理经验的同学

Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架_Mysql

MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发.可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引.这是一个

Mysql limit 优化,百万至千万条记录实现快速分页

可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引.这是一个基本的新闻系统的简单模型.现在往里面填充数据,填充10万篇新闻. 最后collect 为 10万条记录,数据库表占用硬盘1.6

Mysql数据库水平分表实现方案

根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉:水平分表能够很大程度较少这些压力. 1.按时间分表 这种分表方式有一定的局限性,当数据有较强的实效性,如微博发送记录.微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按月分表. 2.按区间范围分表 一般在有严格的自增id需求上,如按照user_id水平分表: table_1  user_id从1~100w table_2  user_id从101~200w table_3  us

浅谈阿里云PCDN原理及接入 几行代码能节省上百万的黑科技到底是什么?

早在今年6月,阿里云已经发布了有一款黑科技产品--PCDN,它是以P2P技术为基础,通过挖掘利用边缘网络海量碎片化闲置资源而构建的低成本高品质内容分发网络服务,非常适用于视频点播.直播.大文件下载等业务场景.自从上线开始就得到了行业的关注,很多用户也在第一时间的申请了试用. 距离上线时隔五个月,不少用户已经成功接入并且上线运行了一段时间.其中绝大部分客户反馈加速效果得到优化,视频首播时间.流畅率等核心性能指标均有提升.与此同时,每月的CDN费用得到了有效缩减,平均降幅超过40%,真正做到了质量提