最近开发遇到一个问题:需要查询一个大时间段内的数据,分1000个小段,即为1000个点。X轴是时间,Y轴是该小时间段内统计后数据。注意:数据返回是一个list,其中每个对象返回值都是该小时间段内数据统计出来的,且需要根据入参顺序返回(这样前端展示就方便)。举例,查询12点到1点的数据,查询频率是30分钟,那么就需要查询11:30-12:00,12:00-12:30,12:30-1:00这三段数据(因为监控系统都是查询过去的数据,所以12点的那个值应该是之前半个小时的)。问题来了,

方案一:直接热查数据库,1000次,最终30s+,淘汰!

方案二:由于多次查库,1000次肯定耗时多,所以采用一次查库,把条件凭借成一个sql,用union all 把每个小时间段查询出来的数据并集,耗时20S,且存在sql过长报错的问题(默认1M)

方案三:直接查询一个大时间段的数据,不统计,直接把库内数据返回,在代码中(即内存中)遍历一遍返回list,对每一个实体,遍历时间段,把这个实体匹配到这个时间段内,map(key,List),key是段号,List存该时间段内的实体。最终统计每个时间段内的数据。第三种方案,耗时1-2秒,再次证明了耗时IO>内存的真理。其中这里有一个细节:为了保证返回数据有序(时间段先后),这里map采用了TreeMap,自然排序即可。

日志监控系统中,大批量查询mysql方案的更多相关文章

  1. 运维开发实践——基于Sentry搭建错误日志监控系统

    错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ...

  2. 【转】Spark Streaming 实时计算在甜橙金融监控系统中的应用及优化

    系统架构介绍 整个实时监控系统的架构是先由 Flume 收集服务器产生的日志 Log 和前端埋点数据, 然后实时把这些信息发送到 Kafka 分布式发布订阅消息系统,接着由 Spark Streami ...

  3. Centos系统中彻底删除Mysql数据库

    步骤: 1.输入命令查询系统中已安装的mysql. rpm -qa |grep -i mysql 2.逐个卸载mysql. yum remove 系统显示已安装的mysql 比如:yum remove ...

  4. 记录在Ubuntu 18.04系统中安装Apache, MySQL和PHP环境

    虽然我们在Linux VPS.服务器安装WEB环境比较方便,可以选择面板或者一键包,但是有些我们需要深入学习的网友不会选择一键安装,而是会尝试编译安装.这样可以学到一些内在的技术.一般我们较为习惯选择 ...

  5. mac系统中搭建apache+mysql+php的开发环境,安装mysql后,登录报错:mac ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    php新手在mac系统中搭建apache+mysql+php的开发环境(按照这篇博客来操作的:http://my.oschina.net/joanfen/blog/171109?fromerr=xvC ...

  6. ClickHouse在监控系统中的应用

    一.背景 这个项目是一个监控系统,主要监控主机.网络设备.应用等.主机监控的数量有1500台左右,数量还在不断增长,加上网络设备和应用,目前总共监控的指标达到近40万个. 二.问题 一开始为了快速交付 ...

  7. GO开发:用go写个日志监控系统

    日志收集系统架构 1.项目背景 a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 b. 当系统机器比较少时,登陆到服务器上查看即可满足 c. 当系统机器规模巨大,登陆到机器上查看几乎不现 ...

  8. CentOS 6.5系统中安装配置MySQL数据库

    就像Windows server 2003,2008中一般安装的是Sql Server 数据库,在linux系统中一般安装的是mysql数据库,而且Mysql数据库的第一个版本就是发行在Linux系统 ...

  9. 动环监控系统中B接口的实现

    动环监控系统简述 1.术语介绍 1.1 省集中监控中心-Province Supervision Center(PSC) 面向多FSU管理的高级监控层次,即省集中监控中心,通过开放的数据协议,连接监控 ...

随机推荐

  1. LeetCode之171. Excel Sheet Column Number

    ---------------------------------- 乘权相加即可. AC代码:(从右往左) public class Solution { public int titleToNum ...

  2. C# 读取大型Xml文件

    这篇博客将介绍在C#中如何读取数据量很大的Xml文件.请看下面的Xml文件, <?xml version="1.0" encoding="utf-8"?& ...

  3. CS224d assignment 1【Neural Network Basics】

    refer to: 机器学习公开课笔记(5):神经网络(Neural Network) CS224d笔记3--神经网络 深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答 CS224 ...

  4. asp.net c# 网上搜集面试题目大全(附答案)

    1.String str=new String("a")和String str = "a"有什么区别? String str = "a"; ...

  5. InstallShield制作升级安装包

    1. 在General Information里,修改Product Version为新的版本号,此版本号应大于旧的版本号.点击Product Code右面的{...},获取一个新的Product C ...

  6. Shader实例:2D流光

    准备: 1.一张背景图 2.一张流光图 3.一张过滤图 like this: 效果: 代码: Shader "Custom/2d_flow" { Properties { _Mai ...

  7. Ubuntu14.10安装Eclipse

    方法一:(缺点是安装时附加openjdk等大量程序并无法去除,优点是安装简单) $ sudo apt-get install eclipse 方法二:(优点是安装内容清爽,缺点是配置麻烦) 1、安装J ...

  8. 浏览器对象模型BOM小结

    概念 BOM (Browser Object Model) 浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window B ...

  9. java和js根据一个或者多个空格截取字符串

    java: String str = "张三 fw1234"; String s[] = str.split("\\s+"); js: var str=&quo ...

  10. Heartbeat+DRBD+MySQL高可用方案

    1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自 ...