當(dāng)前位置:首頁 > IT技術(shù) > 數(shù)據(jù)庫 > 正文

如何動態(tài)變化數(shù)據(jù)庫數(shù)據(jù)
2021-10-12 14:23:36

1. 情況說明

環(huán)境:Linux服務(wù)器。

數(shù)據(jù)來源:snmp命令行能得到數(shù)據(jù),獲取到服務(wù)器的CPU利用率,然后通過Linux命令能寫入數(shù)據(jù)庫,且能動態(tài)更新數(shù)據(jù)。

數(shù)據(jù)要求:通過后端框架傳遞給前端的有三十條數(shù)據(jù),是一個小時內(nèi)的服務(wù)器CPU利用率記錄,每兩分鐘更新一次。

初始想法:數(shù)據(jù)庫設(shè)計就只有一個列,存儲現(xiàn)在的服務(wù)器CPU利用率,在后端邏輯里面設(shè)計一個數(shù)組來存儲之前的數(shù)據(jù),然后動態(tài)更新那數(shù)組,后來發(fā)現(xiàn)根本不可行(或者可能是可行的,但我不知道咋搞)。以下原因分析內(nèi)容是我猜的,因為后端好像是前端每訪問一次,才返回前端一個結(jié)果,訪問一次才運行一次,所以沒法一直運行。但是那數(shù)組肯定要一直都存儲的是過去30次記錄啊,沒法一直運行就沒法實現(xiàn)數(shù)據(jù)存儲更新。還有一個問題是我也剛學(xué),就會用SpringBoot框架,但不懂其中細(xì)節(jié)原理,也不知道該把數(shù)組定義放在哪。

2. 解決方法

方法:數(shù)據(jù)庫設(shè)計時設(shè)計3個列(利用率,數(shù)據(jù)id,當(dāng)前時間)分別存儲過去30個數(shù)據(jù),id是更新數(shù)據(jù)庫的時候能分清哪條數(shù)據(jù)是哪條,當(dāng)前時間就是給人看的。然后寫一個觸發(fā)器函數(shù),每插入一個數(shù)據(jù)時,就刪除最前面的那條數(shù)據(jù),然后更新前面的數(shù)據(jù)的id。

數(shù)據(jù)庫表設(shè)計如下:

?

?

觸發(fā)器設(shè)計如下:

?

?里面有個temp表,原因是如果mysql數(shù)據(jù)庫向原表? 插入/更新 數(shù)據(jù)表之后觸發(fā)的函數(shù)還是?插入/更新 該數(shù)據(jù)表,就會陷入一種死循環(huán),所以設(shè)計了一個和CpuUseRatio一樣的表,只存儲一條數(shù)據(jù),即當(dāng)前的最新CPU利用率,然后更新temp表時,就更新CpuUseRatio存儲數(shù)據(jù)。

?

?

?

?最終效果

?

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務(wù)立即開通 >