PostgreSQL QPS 計數器extension實現
一、背景
實現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結構體,用來全域性儲存計數器:
統計資訊的磁碟儲存:
原始碼:
pg_qps_counter.stat為磁碟持久化計算器儲存。
”8418 000f“為當前select總次數,16進製表示。
登入PG後,查詢:
展示結果,紅色部分就是原始碼實現的結果。從此PG計算QPS,TPS不再難:
有興趣的同學可以給我留言。一起加入PostgreSQL原始碼開發。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30088583/viewspace-1467961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL DBA(133) - Extension(postgresql_anonymizer)SQL
- 峰值QPS/QPS/PV/UV/伺服器數量/併發數/吐吞量/響應時間計算公式伺服器公式
- PostgreSQL DBA(150) - Extension(pgmetrics)SQL
- PostgreSQL DBA(184) - Extension(hypoPG)SQL
- PostgreSQL編寫自定義extensionSQL
- Redux實現組合計數器Redux
- PostgreSQL DBA(134) - Extension(auto_explain)SQLAI
- PostgreSQL DBA(72) - Extension(pgplsql_check)SQL
- PostgreSQL DBA(63) - Extension(pg_qualstats)SQL
- PostgreSQL DBA(83) - Extension(pg_buffercache)SQL
- PostgreSQL DBA(84) - Extension(pg_prewarm)SQL
- PostgreSQL利用編譯器extension支援int128,提升聚合效能SQL編譯
- PostgreSQL DBA(163) - Extension(pg_cron)SQL
- PostgreSQL DBA(162) - Extension(pg_catcheck)SQL
- PostgreSQL DBA(130) - Extension(pgsql-gzip)SQL
- PostgreSQL DBA(63) - Extension(pg_stat_statements)SQL
- Flutter倒數計時/計時器的實現Flutter
- Android 實現計數或者倒數計時 計時器 用法DemoAndroid
- Composition實現科學文字計數器
- 利用Redis實現高併發計數器Redis
- 計數器方式實現非同步併發非同步
- 轉:用Perl實現單詞計數器
- PostgreSQL DBA(129) - Extension(pg_variables).mdSQL
- Jmeter——迴圈控制器中實現Counter計數器的次數重置JMeter
- JS實現對數器JS
- 在react中使用redux並實現計數器案例ReactRedux
- Spring Boot實現資料訪問計數器Spring Boot
- 如何實現Redis裡的自增ID計數器Redis
- Golang的滑動視窗計數器Redis限速實現GolangRedis
- redis之字串型別(string)--計數器實現Redis字串型別
- 計數排序 -- GoLang實現排序Golang
- Redis應用一例(存證數量用計數器實現)Redis
- C++實現以秒為單位的計數器C++
- setTimeout()實現的計數器功能程式碼例項
- 實現高效能高併發的計數器功能
- PostgreSQL MVCC 原始碼實現SQLMVC原始碼
- 6.1.初識Flutter應用之實現一個計數器Flutter
- 利用 C++ 11 特性實現多執行緒計數器C++執行緒