pg_catalog.pg_statio_all_tables là bạn của bạn. Tất cả những gì bạn cần làm là thăm dò định kỳ pg_statio_all_tables cho các bảng trong câu hỏi. Thay đổi số liệu thống kê ~ bảng hoạt động, số liệu thống kê không thay đổi ~ bảng có khả năng không được sử dụng. Chỉ cần cẩn thận rằng không ai làm một select pg_stat_reset () ;
trong giữa giám sát của bạn.
Ví dụ:
test_1=# create table test_stats (col1 integer);
CREATE TABLE
test_1=# select * from pg_catalog.pg_statio_all_tables
where schemaname not in ('pg_catalog', 'information_schema')
and relname = 'test_stats';
relid | schemaname | relname | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | tidx_blks_hit
-------+------------+------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+---------------
22957 | public | test_stats | 0 | 0 | [null] | [null] | [null] | [null] | [null] | [null]
(1 row)
Chèn:
test_1=# insert into test_stats (col1) select generate_series( 1, 10000000);
INSERT 0 10000000
test_1=# select * from pg_catalog.pg_statio_all_tables
where schemaname not in ('pg_catalog', 'information_schema')
and relname = 'test_stats';
relid | schemaname | relname | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | tidx_blks_hit
-------+------------+------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+---------------
22957 | public | test_stats | 44260 | 10088481 | [null] | [null] | [null] | [null] | [null] | [null]
(1 row)
Chọn:
test_1=# select count (*) from test_stats where col1 between 10000 and 50000;
count
-------
40001
(1 row)
test_1=# select * from pg_catalog.pg_statio_all_tables
where schemaname not in ('pg_catalog', 'information_schema')
and relname = 'test_stats';
relid | schemaname | relname | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | tidx_blks_hit
-------+------------+------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+---------------
22957 | public | test_stats | 85560 | 10091429 | [null] | [null] | [null] | [null] | [null] | [null]
(1 row)
Xóa:
test_1=# delete from test_stats where col1 between 10000 and 50000;
DELETE 40001
test_1=# select * from pg_catalog.pg_statio_all_tables
where schemaname not in ('pg_catalog', 'information_schema')
and relname = 'test_stats';
relid | schemaname | relname | heap_blks_read | heap_blks_hit | idx_blks_read | idx_blks_hit | toast_blks_read | toast_blks_hit | tidx_blks_read | tidx_blks_hit
-------+------------+------------+----------------+---------------+---------------+--------------+-----------------+----------------+----------------+---------------
22957 | public | test_stats | 155075 | 10136163 | [null] | [null] | [null] | [null] | [null] | [null]
(1 row)
cập nhật-- 2011-09-01
Thử nghiệm thêm cho thấy rằng vacuum
dường như tăng các giá trị trong pg_statio_all_tables, điều này không may cho việc sử dụng mong muốn của bạn. Mặc dù vacuum
không sử dụng pg_statio_all_tables vô dụng, nhưng nó làm cho việc diễn giải kết quả trở nên khó hiểu hơn một chút.
Có lẽ một nơi tốt hơn để theo dõi là pg_catalog.pg_stat_all_tables (ít nhất là với các phiên bản mới hơn của PG). Tôi đang xem phiên bản 8.4 và có các bộ dữ liệu được chèn, đọc, cập nhật và xóa-- ISTR 8.2 không có tất cả những điều đó và tôi không biết về 8.3 vì vậy YMMV tùy thuộc vào phiên bản của PG mà bạn đang sử dụng.
Tùy chọn thứ ba (để chèn, cập nhật và xóa hoạt động) là xem dấu thời gian của tệp trong thư mục $ PGDATA / base / $ datid. Tên tệp phải ánh xạ tới oid của bảng, vì vậy bạn có thể sử dụng tên này để xác định các bảng không nhận được chèn, cập nhật hoặc xóa. Thật không may, đây không phải là các bảng địa chỉ vẫn được chọn từ và sử dụng không gian bảng sẽ gây ra các biến chứng bổ sung (vì các tệp đó sẽ không nằm dưới $ PGDATA / base / $ datid). Dấu thời gian sẽ không cập nhật cho đến khi bất kỳ thay đổi đang chờ xử lý nào bị xóa, nhưng nếu tệp không thay đổi trong nhiều tháng thì tỷ lệ thay đổi hiện đang chờ xử lý có thể là nhỏ.
select
. Bạn đã xem xét đăng nhập ?