主機繁忙程度分析製作過程

2021-04-18 02:22:56 字數 2282 閱讀 7497

主機繁忙程度表

這是乙個常見的能夠衡量一台機器的繁忙程度的報表。

看似簡單,也就是一張報表當中放置了多個圖表。但實際上由於資料庫的單錶資料量近億,直接取資料幾乎是不可能的。

並且由於資料庫表並不算科學,也就是要要做這個表,需要從四張不同的資料庫表當中取資料。我埋頭查了好久,才算把這個sql搞定,貢獻出來給大家分享一下。

select

a.host as host,

b.parameter.name as parameter,

to_date('1970-01-01','yyyy-mm-dd') + trunc(c.timestamp/(1000*60*60*24)) as dates,

substr(to_char(to_date('1970-01-01','yyyy-mm-dd hh24:mi:ss') + c.timestamp/(1000*60*60*24),'yyyy-mm-dd hh24:mi:ss'),12,2) as hours,

to_number(c.value) as value

from

(select * from a where host='[?host ¦server6?]') a inner join d d on a.guid = d.host

inner join (select * from b where b.parametername='cpu'

or b.parametername='memory'

or b.parametername='dskbusy'

or b.parametername='io'

or b.parametername='fspercent'

where to_date('1970-01-01','yyyy-mm-dd') + trunc(c.timestamp/(1000*60*60*24))>=to_date('[?start ¦2008-04-05?]','yyyy-mm-dd')

and to_date('1970-01-01','yyyy-mm-dd') + trunc(c.timestamp/(1000*60*60*24)) <=to_date('[?end ¦2008-04-12?]','yyyy-mm-dd')

在這個sql裡面,首先資料是存在oracle資料庫裡面的,我面對的第乙個問題,就是資料庫當中儲存的時間都是時間戳,也就是距離2023年1月1號零點的毫秒數。需要將其轉化為我們常用的yyyy-mm-dd格式。我一點感覺就是應該用to_date函式。但是只有乙個to_date似乎是不能完成徹底的轉化。

怎麼辦呢,google,baidu了無數,都沒有找到答案,誰讓我不懂什麼sql呢,書到用時方恨少!

日期型的問題解決了,然後又有乙個嚴重的問題冒出來了,資料量太大,在pl/sql裡面執行,都需要花超過一小時的時間,這個肯定是不能讓人接受的。我只好又埋頭鑽研sql優化,噹噹噹噹,成功的把執行時間降低到了0.47秒!

主要的優化方法,就是把where條件,大部分放到inner join那裡去做。說起來其實挺簡單,是吧。

然後說說報表吧,這個報表是在一張表當中體現了四個圖表,乙個日趨勢,其它三個都是周趨勢。其中第乙個圖和第二圖的統計的指標是一樣的,分別都是cpu利用率,記憶體利用率和磁碟的利用率。這三個指標的組合往往能夠代表一台機器的繁忙程度。

然後還有乙個圖是磁碟的忙率比率,以及檔案系統的平均可用空間。

設計的方法就沒有什麼難度好說了,因為我用的finereport,做這個報表就是小菜一碟了。直接把剛剛定義好的列拖過來,乙個小時,乙個日期,兩個時間字段分別放到b3c3格仔裡面。左邊a4到a8手工寫上指標名字或者將庫裡面的指標名字拖來,中間拖資料過來。就ok。 然後直接插入圖表,選擇好資料區域就可以了。just like excel~

當然,這個表要體現的圖表,當然可以不用拖拽資料到報表裡面,直接寫sql做圖表了。不過,我比較懶,不想寫4次sql,所以,就先把資料拖過來,獲得圖表要體現的資料,再直接從格仔裡面讀了。所以最後最後,我不想在報表裡面看到資料,只要圖表,隱藏資料區域就好了。就這麼簡單。

最後一點,在前面的sql裡面我想大家都看到了,這個報表是有引數的。對這太平常不過了,好像每一張報表都會有時間引數的,沒有人說,我不管時間,只統計所有的結果吧。以前用別的工具的時候,有引數的報表,都需要通過自己手寫一些jsp或者什麼其他的,在頁面裡面把引數查詢的框子弄出來。

聽說汽車的發明是因為人懶得走路,那麼我這種懶人,會不會促進軟體越來越人性化呢?答案當然是。所以,就是說,我用的finereport,是可以這樣的。報表裡面有什麼引數,我只需要把它定位乙個位置,訪問報表的時候,就可以直接彈出或者有個內嵌的引數查詢框子了。溜個圖:

tflite製作過程

bazel bin tensorflow contrib lite toco toco input file pwd facenet tmp ponet model.pb input format tensorflow graphdef output format tflite output fil...

關卡製作過程

主遊戲情節由主遊戲設計師完成,他們設計遊戲的情節,並將其分解成不同的關卡,而後他們會將工作成果寫入遊戲策劃案,他們的工作就此結束。而從關卡設計進入了乙個新的階段,新階段由關卡設計師完成,他們將根據主遊戲設計師編寫的策劃案去完成各種關卡的實際製作。1.確定目標 目標基於任務,要從多角度分析玩家完成目標...

reboot exe的製作過程

reboot.exe 的製作過程 程式設計工具 visual c net 2003 程式設計師 黃江斌 程式功能 關閉 重啟計算機 登出當前使用者。2005年8 月27日檔案 新建 專案,從中選擇 mfc mfc 應用程式 輸入工程名 reboot 應用程式型別 基於對話方塊。其它設定按預設。新增的...