2013-07-17 49 views
1

我正在使用postgreSQL-9.1.6並試圖爲postgreSQL服務器構建監視應用程序。pg_stat_bgwriter表中buffers_checkpoint的單位是什麼?

我打算從pg_stat_*信息表中選擇物理和邏輯I/O統計。

根據PG_STAT_DATABASEMANUAL單元字段是BLOCK這意味着8KB大小。

postgres=# select * from pg_stat_database where datname='postgres';  
-[ RECORD 3 ]-+------------------------------ 
datid   | 12780 
datname  | postgres 
numbackends | 2 
xact_commit | 974 
xact_rollback | 57 
blks_read  | 210769 
blks_hit  | 18664177 
tup_returned | 16074339 
tup_fetched | 35121 
tup_inserted | 18182015 
tup_updated | 572 
tup_deleted | 3075 
conflicts  | 0 

我能想出的PHYSICAL READ尺寸usging blks_read * 8KB。 但是,PG_STAT_BGWRITER中的統計單位沒有評論。

postgres=# select * from pg_stat_bgwriter; 
-[ RECORD 1 ]---------+------------------------------ 
checkpoints_timed  | 276 
checkpoints_req  | 8 
buffers_checkpoint | 94956 
buffers_clean   | 0 
maxwritten_clean  | 0 
buffers_backend  | 82618 
buffers_backend_fsync | 0 
buffers_alloc   | 174760 
stats_reset   | 2013-07-15 22:27:05.503125+09 

如何計算的PHYSICAL WRITE通過buffers_checkpoint大小?

任何意見將不勝感激。

回答

1

從實際性能手冊「PostgreSQL的9.0高性能」由格雷格·史密斯採取的章節中對數據庫活動統計:

  • 基於活動的,而不是被要求多少百分比的時間關卡時間流逝?
  • 平均檢查點寫入多少數據?
  • 分別從檢查點和後端發出的數據百分比是多少?
SELECT 
    (100 * checkpoints_req)/
     (checkpoints_timed + checkpoints_req) AS checkpoints_req_pct, 
    pg_size_pretty(buffers_checkpoint * block_size/
     (checkpoints_timed + checkpoints_req)) AS avg_checkpoint_write, 
    pg_size_pretty(block_size * 
     (buffers_checkpoint + buffers_clean + buffers_backend)) AS total_written, 
    100 * buffers_checkpoint/
     (buffers_checkpoint + buffers_clean + buffers_backend) AS checkpoint_write_pct, 
    100 * buffers_backend/
     (buffers_checkpoint + buffers_clean + buffers_backend) AS backend_write_pct, 
    * 
FROM pg_stat_bgwriter, 
(SELECT cast(current_setting('block_size') AS integer) AS block_size) bs;