如何动态变化数据库数据
1. 情况说明
环境:Linux服务器。
数据来源:snmp命令行能得到数据,获取到服务器的CPU利用率,然后通过Linux命令能写入数据库,且能动态更新数据。
数据要求:通过后端框架传递给前端的有三十条数据,是一个小时内的服务器CPU利用率记录,每两分钟更新一次。
初始想法:数据库设计就只有一个列,存储现在的服务器CPU利用率,在后端逻辑里面设计一个数组来存储之前的数据,然后动态更新那数组,后来发现根本不可行(或者可能是可行的,但我不知道咋搞)。以下原因分析内容是我猜的,因为后端好像是前端每访问一次,才返回前端一个结果,访问一次才运行一次,所以没法一直运行。但是那数组肯定要一直都存储的是过去30次记录啊,没法一直运行就没法实现数据存储更新。还有一个问题是我也刚学,就会用SpringBoot框架,但不懂其中细节原理,也不知道该把数组定义放在哪。
2. 解决方法
方法:数据库设计时设计3个列(利用率,数据id,当前时间)分别存储过去30个数据,id是更新数据库的时候能分清哪条数据是哪条,当前时间就是给人看的。然后写一个触发器函数,每插入一个数据时,就删除最前面的那条数据,然后更新前面的数据的id。
数据库表设计如下:
触发器设计如下:
里面有个temp表,原因是如果mysql数据库向原表 插入/更新 数据表之后触发的函数还是 插入/更新 该数据表,就会陷入一种死循环,所以设计了一个和CpuUseRatio一样的表,只存储一条数据,即当前的最新CPU利用率,然后更新temp表时,就更新CpuUseRatio存储数据。
最终效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述