pg_catalog.pg_statio_all_tables ist dein Freund. Sie müssen lediglich regelmäßig pg_statio_all_tables nach den betreffenden Tabellen abfragen. Ändern von Statistiken ~ aktive Tabelle, nicht ändernde Statistiken ~ möglicherweise nicht verwendete Tabelle. Seien Sie nur vorsichtig, dass niemand select pg_stat_reset () ;mitten in Ihrer Überwachung eine macht.
Beispielsweise:
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)
Beilagen:
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)
Wählt aus:
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)
Löscht:
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)
update-- 2011-09-01
Weitere Tests zeigen, dass vacuumdie Werte in pg_statio_all_tables etwas zu steigen scheinen, was für Ihre gewünschte Verwendung unglücklich ist. Die vacuumVerwendung von pg_statio_all_tables ist zwar nicht nutzlos, macht die Interpretation der Ergebnisse jedoch etwas unübersichtlicher.
Möglicherweise ist pg_catalog.pg_stat_all_tables ein besserer Ort zum Überwachen (zumindest bei neueren Versionen von Pg). Ich schaue auf Version 8.4 und das zählt für eingefügte, gelesene, aktualisierte und gelöschte Tupel - ISTR 8.2 hat nicht alles und ich weiß nichts über 8.3, also YMMV, abhängig von der Version von Pg, die Sie sind mit.
Eine dritte Option (zum Einfügen, Aktualisieren und Löschen von Aktivitäten) besteht darin, die Zeitstempel der Datei im Verzeichnis $ PGDATA / base / $ datid zu überwachen. Der Dateiname sollte der OID der Tabelle zugeordnet sein, damit Sie damit Tabellen identifizieren können, die keine Einfügungen, Aktualisierungen oder Löschungen erhalten. Leider werden hiermit keine Tabellen angesprochen, aus denen noch ausgewählt wird, und die Verwendung von Tablespaces führt zu zusätzlichen Komplikationen (da diese Dateien nicht unter $ PGDATA / base / $ datid liegen). Die Zeitstempel werden erst aktualisiert, wenn ausstehende Änderungen gelöscht wurden. Wenn sich die Datei jedoch seit Monaten nicht geändert hat, ist die Wahrscheinlichkeit einer derzeit ausstehenden Änderung wahrscheinlich gering.
select. Haben Sie überlegt, sich anzumelden ?