1. 情况说明
环境:Linux服务器。
数据来源:snmp命令行能得到数据,获取到服务器的CPU利用率,然后通过Linux命令能写入数据库,且能动态更新数据。
数据要求:通过后端框架传递给前端的有三十条数据,是一个小时内的服务器CPU利用率记录,每两分钟更新一次。
初始想法:数据库设计就只有一个列,存储现在的服务器CPU利用率,在后端逻辑里面设计一个数组来存储之前的数据,然后动态更新那数组,后来发现根本不可行(或者可能是可行的,但我不知道咋搞)。以下原因分析内容是我猜的,因为后端好像是前端每访问一次,才返回前端一个结果,访问一次才运行一次,所以没法一直运行。但是那数组肯定要一直都存储的是过去30次记录啊,没法一直运行就没法实现数据存储更新。还有一个问题是我也刚学,就会用SpringBoot框架,但不懂其中细节原理,也不知道该把数组定义放在哪。
2. 解决方法
方法:数据库设计时设计3个列(利用率,数据id,当前时间)分别存储过去30个数据,id是更新数据库的时候能分清哪条数据是哪条,当前时间就是给人看的。然后写一个触发器函数,每插入一个数据时,就删除最前面的那条数据,然后更新前面的数据的id。
数据库表设计如下:
触发器设计如下:
里面有个temp表,原因是如果mysql数据库向原表 插入/更新 数据表之后触发的函数还是 插入/更新 该数据表,就会陷入一种死循环,所以设计了一个和CpuUseRatio一样的表,只存储一条数据,即当前的最新CPU利用率,然后更新temp表时,就更新CpuUseRatio存储数据。
最终效果
本文摘自 :https://www.cnblogs.com/