亿级数据优化

情况简介

用户分析系统以用户的心跳数据为依据,统计查询用户的各种情况。心跳数据很多,经过去重,去无效,数据量还是在2亿/月的水平。普通的查询在这个量级的数据库上根本查不出来,为此,分表分库、优化查询、多线程查询就很有必要了。

分表分库

对于大数据查询,我的第一反应就是分表分库,我之前对分表分库已经听的很多了,但自己之前并没有真的做过分表分库。我经常说分表分库,经常听分表分库,对分表分库的技术充满了兴趣,所以这次,我的意见就是上分表分库。分库分表就是按一定规则把一张大表的数据切成多个小表,查询时分组查询多个小表再把结果集集合起来。

分表其实只是对数据表的数据量的减少。比如一个1亿的表,经过分表后,会分成4个千万级别的表,对于查询sql,会在千万级别的表中执行,并把结果合并起来。在亿级查询的时间比千万级会提高很多,这个就是分表的作用。但是分表仅仅是数据量的减少,并没有去解决查询慢的问题,如果一个查询慢,及时使用分表,它还是很慢。

我们最终用mycat这个数据库中间件来进行分库分表,mycat启动后,会开启一个模拟mysql的服务端,对于插入的sql,它可以按规则自主放入对应的表中,对应查询的sql,它会自动的去各个数据库查询,并自动整合结果。

优化查询

经过对数据库的了解后,我发现,数据库查询的最该优化的地方还是数据库优化。首先就是

加索引

索引要加给需要查询的列,对于执行的sql,我们要使用EXPLAIN进行查询分析,看查询是否走的索引。

如果查询返回的数据过多,会导致cpu和内存占用过大,用show profile for query去查看查询状态时,sending data过大时,就可能是返回数据过多。sending data的耗时来源于sending和sort的时间之和,去掉排序,时间也能快很多。还要关注一下limit这里,比如limit 2000,60它这里实际会走一个扫描前2000个,如果有条件就比较好了,比如id>2000 limit 1,60这样其实就好的很多。所以对于返回结果比较大的查询,引出了第二个策略

切分条件

切分条件就是查询的时候将条件分的细一些,这样查出的每段数据都很少一些,limit的时候,扫描也少一些。

多线程查询

既然做了切分条件,那么多线程查询也是必不可少的。多线程查询再聚合数据,这才能将时间效率提到最高,对与多线程,主要还是java后台做的,多线程的常见操作有,

CountDownLatch同步

即在CountDownLatch中,代码多线程执行,主线程挂起,等CountDownLatch的那些多线程全部执行完毕后,在去执行主线程。

LinkedBlockingQueue/ConcurrentLinkedDeque队列

LinkedBlockingQueue/ConcurrentLinkedDeque是一个线程安全队列,那个block单词是锁的意思,其实就是堵塞的。在这里的查询就需要队列呀,查询条件是一个list,要保证list的每一个条件查询一次,不能重复查询,这里,就必须要用队列了。queue有两个方法add()、pull(),一个出对,一个入队。

亿级数据mysql优化相关推荐

  1. 一入职!就遇到MySQL亿级大表优化....

    作者丨jia-xin 出处: https://www.cnblogs.com/YangJiaXin/p/10828244.html "前段时间刚入职一家公司,就遇到了 MySQL 亿级大表优 ...

  2. MySQL高性能:索引、锁、事务、分库分表如何撑起亿级数据

    最近项目增加,缺人手,面试不少,但匹配的人少的可怜.跟其他组的面试官聊,他也抱怨了一番,说候选人有点儿花拳绣腿,回答问题不落地,拿面试最常问的MySQL来说,并不只是懂"增删改查" ...

  3. 阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了

    说在前面 在尼恩指导了几百个小伙伴的面试,在这些过程中, 非常.非常高频的一个面试题: 千万级数据,如何做性能优化? 亿级数据,如何做性能优化? 最近,有个小伙伴阿里二面,又遇到了这个问题. 其实,尼 ...

  4. Mysql数据库快速插入亿级数据

    Mysql数据库快速插入亿级数据 接手一个项目,该项目运行了两三年了.接手的时候,只有一个部署文档和全部代码,再没有其他文档了,也没有其他任何人了解这个项目.好吧,试着深入了解吧.代码在测试环境跑来了 ...

  5. 十亿级视频播放技术优化揭密

    本文为转载文章,文章来自:王辉|十亿级视频播放技术优化揭密 QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦.北京.东京.纽约.圣保罗.上海.旧金山召开.自 2007年 3月份首次举办以来,已 ...

  6. 腾讯研发总监王辉:十亿级视频播放技术优化揭秘

    QQ 空间在 2016 年日均视频播放量由年初的千万级迅速突破到十亿级,过程中也对整个视频播放技术的可靠性.性能.操作体验等方面提出严峻的考验,相关质量急需提升.经过多个迭代持续和各项优化,外网整体质 ...

  7. 【python 处理亿级数据】使用 Pandas 处理亿级数据

    此前有一篇文章<别老扯什么Hadoop了,你的数据根本不够大>指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择.事实确实如此,在数据分析领域,那么如何处理亿级数据呢 ...

  8. QQ空间十亿级视频播放技术优化揭密

    该文章内干货还是不少的缓冲和秒开是比较感兴趣的点,不得不说腾讯做的真的用心! 4月18日QCon性能优化面面观专题会议上,腾讯研发总监王辉以"十亿级视频播放技术优化揭秘"为主题,用 ...

  9. 【HBase调优】Hbase万亿级存储性能优化总结

    [HBase调优]Hbase万亿级存储性能优化总结 2017-04-07 背景:HBase主集群在生产环境已稳定运行有1年半时间,最大的单表region数已达7200多个,每天新增入库量就有百亿条,对 ...

最新文章

  1. 正则表达式的基本入门
  2. 对标Oculus Quest2,爱奇艺奇遇VR打的什么牌?
  3. CentOS 7.3 安装配置RabbitMQ
  4. SQLServer之删除存储过程
  5. 泛型中的模糊继承,解析T的意义
  6. TCP/IP模型的简单解释
  7. Android-两种方式实现走马灯效果
  8. linux上的smartsvn图形客户端,CentOS6.3下svn图形客户端smartsvn安装
  9. win10企业版2016长期服务版 无法远程桌面
  10. 茂密林冠下实时语义SLAM的大规模自主飞行
  11. android基于蓝牙实验,基于Android系统蓝牙开发的探究与实现.pdf
  12. uipath sequence传递参数_湘西单向滑动球铰支座设计参数深化,期待合作
  13. SharePoint 2013 文档库“样式”变了
  14. a为实数java_Java 实数相加
  15. 抖音小黄车挂淘宝店相关问题记录
  16. IObit Advanced SystemCare 系统清理优化工具
  17. 2020.4.1-2020.4.7 魔笛手Pied pier周记
  18. 异常:EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
  19. 【聚宽本地数据JQData】一个命令获取全部股票全部的财务报表数据
  20. 阴沟翻船——MHA测试主从失败NOT OK!

热门文章

  1. JavaScript运动相关知识
  2. igs无法分配驱动器映射表_Linux的mmap内存映射原理到底是怎样的?
  3. 使用Office Deployment Tool离线安装Office 365
  4. 美柚中止上市背后:“她经济”折戟?
  5. springboot+mysql二手书交易平台-计算机毕业设计源码17782
  6. 苹果官网证书文件,待研究
  7. C# 根据UserId生成可逆的唯一邀请码
  8. 力压微信成 App Store 榜第一,子弹短信能否避免火一把就“死”?
  9. OBJECT ARX 实体类 通用操作函数
  10. 如何用爬虫爬图,以百度图片为例