PostgreSQL QPS 計數器extension實現

jesselyu發表於2015-03-20

一、背景

實現QPS counter的原因,是為了PG也能夠有類似MySQL 那樣的 "Com_select,Com_update,Com_delete,Com_update" 計數器,方便計算QPS,TPS。

因為PG在原始碼級別並沒有實現這一功能,另外update,delete,insert的次數也需要透過計算,不斷查詢檢視而得到,並不是十分方便。

二、extension實現

為什麼要以擴充套件的方式來實現QPS計數功能?原先我已經以patch方式實現,但是對原始碼改動比較多。後面經過考慮還是以extension擴充套件的方式來實現,

這樣子對原始碼的侵入比較少。另外PG對extension模式的支援也非常到位。

以下是部分原始碼:

Counter結構體,用來全域性儲存計數器:

clip_image002

統計資訊的磁碟儲存:

原始碼:

clip_image004

pg_qps_counter.stat為磁碟持久化計算器儲存。

”8418 000f“為當前select總次數,16進製表示。

clip_image005

登入PG後,查詢:

展示結果,紅色部分就是原始碼實現的結果。從此PG計算QPS,TPS不再難:

clip_image008

 

有興趣的同學可以給我留言。一起加入PostgreSQL原始碼開發。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30088583/viewspace-1467961/,如需轉載,請註明出處,否則將追究法律責任。

相關文章