1. 情況說(shuō)明
環(huán)境:Linux服務(wù)器。
數(shù)據(jù)來(lái)源:snmp命令行能得到數(shù)據(jù),獲取到服務(wù)器的CPU利用率,然后通過(guò)Linux命令能寫(xiě)入數(shù)據(jù)庫(kù),且能動(dòng)態(tài)更新數(shù)據(jù)。
數(shù)據(jù)要求:通過(guò)后端框架傳遞給前端的有三十條數(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問(wèn)一次,才返回前端一個(gè)結(jié)果,訪問(wèn)一次才運(yùn)行一次,所以沒(méi)法一直運(yùn)行。但是那數(shù)組肯定要一直都存儲(chǔ)的是過(guò)去30次記錄啊,沒(méi)法一直運(yùn)行就沒(méi)法實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)更新。還有一個(gè)問(wèn)題是我也剛學(xué),就會(huì)用SpringBoot框架,但不懂其中細(xì)節(jié)原理,也不知道該把數(shù)組定義放在哪。
2. 解決方法
方法:數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)設(shè)計(jì)3個(gè)列(利用率,數(shù)據(jù)id,當(dāng)前時(shí)間)分別存儲(chǔ)過(guò)去30個(gè)數(shù)據(jù),id是更新數(shù)據(jù)庫(kù)的時(shí)候能分清哪條數(shù)據(jù)是哪條,當(dāng)前時(shí)間就是給人看的。然后寫(xiě)一個(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/