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

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

1. 情況說(shuō)明

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

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

數(shù)據(jù)要求:通過后端框架傳遞給前端的有三十條數(shù)據(jù),是一個(gè)小時(shí)內(nèi)的服務(wù)器CPU利用率記錄,每?jī)煞昼姼乱淮巍?/p>

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

2. 解決方法

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

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

?

?

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

?

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

?

?

?

?最終效果

?

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

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