效能問題案例01 sybase資料庫記憶體問題

2022-09-19 01:33:10 字數 1447 閱讀 8108

近期現場反饋問題。全部電子簽章頁面打不開文書(pdf格式),後台日誌沒報不論什麼錯誤,效果就是空白:

1、首先想到是簽章的ocx控制項問題,檢查ocx控制項安裝,發現其它電腦也打不開文書,測試頁面能夠直接開啟pdf文件,排除控制項的問題。

4、分析sql。簡化後sql為:

select * from t_zxld_syyh_fj

where c_bh_sq='76a1737d773be344b7154aa479634fed'

and c_fjlx='syyhcx.zz.cxs.gy'

查詢條件中c_bh_sq是有索引的。理論上不應該這麼慢呀,檢視執行計畫發現:

居然沒實用到索引。執行時間是274s。有索引卻沒用到,並且c_bh_sq這個欄位是主表主鍵,被選中概率應該很高,懷疑是統計資訊出問題了。使用

update all statistics t_zxld_syyh_fj
更新統計資訊,更新後執行原始sql,用了0.12s,執行計畫也顯示出使用了索引

問題看似攻克了。可是偶爾還會出現開啟很慢(快的10s左右,慢的幾分鐘)的情況,怎麼回事呢?檢查過程中發現不只這個頁面偶爾慢。許多頁面都偶爾很慢。第一次開啟慢,興許就很快了。等一會再開啟又慢了。

檢視p6spy日誌發現(深顏色列是sql執行時間,只記錄了執行2s以上的sql),把執行時間長的sql拿出來單獨執行。許多第一次執行幾十秒。第二次執行不到1s。能夠確定問題原因了,系統記憶體較小。

sybase資料能夠使用以下命令檢視io情況:set

第一次執行結果:

第二次執行結果:

能夠看到第一次從磁碟和記憶體都讀取了內容。第二次physical reads是0。全然從記憶體讀取當然查詢快了。記憶體較小的話,其它查詢資料讀進記憶體後。把舊的資料從記憶體中清除,再查詢舊資料還須要從磁碟讀取到記憶體。所以經常出現第一次較慢。興許較快情況。最好辦法就是加大記憶體,把經常使用的資料都讀取到記憶體中快取起來。

解決的方法建議現場公升級sybase到15.7。由於sybase12.5.3沒有64位版本號。32位最多使用記憶體2g,好多表都是上百萬的資料,確實查詢較慢。

查詢系統效能問題(案例一)

背景 此系統功能上大抵分為兩部分,乙個是web的管理平台,其二是定時檢測 路由 轉換傳送報文的後端功能。系統主要計算在後端功能。管理平台的使用量很小,基本是配置及狀態檢視。現象 在測試資料中,處理5萬單的檔案。據相關開發人員描述,系統記憶體洩漏,系統執行越來越慢。檢視 由開發人員提供的函式執行時間統...

01分數規劃問題

形如 ai xi bi xi 求極值問題,其中xi 0,1。設r ai xi bi xi 整理以後可以得到f r ai xi r bi xi 顯然f r 是乙個線性的函式,單調,因此可以用二分法進行求解。設中間變數為r 答案為r,則有 f r 0 r f r 0 r r f r 0 r r ai x...

01分數規劃問題

問題模型1 給定 n 個二元組 value i,cost i 在其中選出 m 個,value i 是選擇此二元組獲得的價值 非負 cost i 是選擇此二元組付出的代價 非負 設 xi xi in 代表第 i 個二元組的選與不選,最大化下式 r frac 1 n 1000,0 k sigma val...