首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器监控应用程序( mysql )

机器监控应用程序( mysql )
EN

Stack Overflow用户
提问于 2016-01-14 00:36:36
回答 1查看 47关注 0票数 1

我正在为一台机器构建一个监控应用程序,位置必须在一个月的时间内每秒读取和存储。我写了一个过程,用初始值0填充表。

代码语言:javascript
复制
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(start_date datetime, end_date datetime)
BEGIN

DECLARE interval_var INT DEFAULT 1;

    WHILE end_date >= start_date DO

        INSERT INTO table1(datetime, value) VALUES(start_date, 0);
        SET start_date = DATE_ADD(start_date, INTERVAL interval_var SECOND);

    END WHILE;

END

此过程非常慢,并且大多数情况下会丢失与sql数据库的连接。例如,当我尝试从"2016-01-14 07:00:00“填表到"2016-01-15 07:00:00:00”时,程序到达了2016-01-14 07:16:39,由于与数据库失去连接而崩溃。

有没有一种更有效的方法来创建一个月的模板表,该模板表的增量为秒,值为0?我的监控应用程序是在vb.net上构建的,我曾尝试在vb上创建一个代码来创建这个模板表,但它比mysql工作站上的直接过程更慢,而且更有可能崩溃。

EN

回答 1

Stack Overflow用户

发布于 2016-01-14 05:02:43

我建议先看一下应用程序架构。期望整个系统在整个月内运行一秒钟都不会出现故障,这要求太高了。另外,试着想想你是否真的需要这么多数据。

1条记录/秒*3600秒/小时*24小时/天*30天/月超过310万条记录。尝试处理如此多的信息将导致许多软件阻塞。

如果测量是离散的,则只需在数据库中记录更改,就可以大大减少这种情况。如果它是模拟的,你可能没有选择。

我建议创建两个独立的应用程序:一个存储本地数据的本地监视器,然后每隔一个小时左右向mysql服务器应用程序报告一次。这样,如果数据库不可用,它会继续收集数据,当数据库再次可用时,它可以传输自上次连接以来记录的所有内容。然后,mysql应用程序可以一次性将数据存储在数据库中。如果失败,它可以重试,并保留自己的数据副本,直到数据存储到数据库中。

例如:

机器=>监控工作站应用程序=> mysql应用程序=> mysql数据库

这需要更多的工作,但每个应用程序都非常小,甚至可能是可重用的。这将使故障排除变得更加容易,并极大地提高系统的容错性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34772120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档