Hi,

I'm facing a problem which seems like a bug to me. I'm running:

centos 5.9
postgresql92.x86_64 (9.2.4-1PGDG.rhel5)

I have a table whith many inserts/deletes

select * from pg_stat_user_tables where schemaname = 'lobby' and
relname = 'lobby_player' order by n_live_tup desc;
relid | schemaname | relname | seq_scan | seq_tup_read | idx_scan |
idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | n_tup_hot_upd |
n_live_tup | n_dead_tup | last_vacuum | last_autovacuum | last_analyze
| last_autoanalyze | vacuum_count | autovacuum_count | analyze_count |
autoanalyze_count
-------+------------+--------------+----------+--------------+----------+---------------+-----------+-----------+-----------+---------------+------------+------------+-------------------------------+------
-------------------------+-------------------------------+-------------------------------+--------------+------------------+---------------+-------------------
16594 | lobby | lobby_player | 231335 | 7156825 | 3726165 | 3334044 |
277457 | 124 | 277380 | 118 | 608965 | 187 | 2013-08-07
11:38:08.877226+02 | 2013- 08-07 10:48:16.282828+02 | 2013-08-07
11:17:50.551531+02 | 2013-08-06 19:48:41.649425+02 | 8 | 25 | 4 | 24
(1 row)


select reltuples from pg_class where relname = 'lobby_player';
reltuples
-----------
608985
(1 row)


But my Problem is the following:

select count(*) from lobby_player;
count
-------
10
(1 row)

If I do an analyze, the stats change:

select relname, n_live_tup, n_dead_tup, last_vacuum, last_autovacuum
from pg_stat_user_tables where schemaname = 'lobby' and relname =
'lobby_player' order by n_live_tup desc;
relname | n_live_tup | n_dead_tup | last_vacuum | last_autovacuum
--------------+------------+------------+-------------------------------+-------------------------------
lobby_player | 15 | 609186 | 2013-08-07 11:38:08.877226+02 |
2013-08-07 10:48:16.282828+02
(1 row)

Reltuples stays at the 600k value, after another vacuum the tuples are live again.

I already did a reindex table, dropped the index+pkey, vacuum full but it doesn't change anything.

Another thing I see is:

\dt+ lobby_player
List of relations
Schema | Name | Type | Owner | Size | Description
--------+--------------+-------+-------+-------+-------------
lobby | lobby_player | table | adm | 46 MB |
(1 row)

select oid from pg_class where relname = 'lobby_player';
oid
-------
16594
(1 row)

postgres@database:~ # ls -alh 9.2/data/base/*/16594*
-rw------- 1 postgres postgres 0 Aug 7 11:34 9.2/data/base/16384/16594

So the 46MB are not there

vacuum ANALYZE VERBOSE lobby_player;
INFO:  vacuuming "lobby.lobby_player"
INFO:  index "lobby_player_pkey" now contains 609319 row versions in
2348 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 8.03 sec.
INFO:  index "idx_lobby_player_gtype_player_type" now contains 609319
row versions in 1674 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 1.00 sec.
INFO:  "lobby_player": found 0 removable, 609319 nonremovable row
versions in 5937 out of 5937 pages
DETAIL:  609299 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 16.18 sec.
INFO:  vacuuming "pg_toast.pg_toast_16594"
INFO:  index "pg_toast_16594_index" now contains 0 row versions in 1 pages
DETAIL:  0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  "pg_toast_16594": found 0 removable, 0 nonremovable row
versions in 0 out of 0 pages
DETAIL:  0 dead row versions cannot be removed yet.
There were 0 unused item pointers.
0 pages are entirely empty.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO:  analyzing "lobby.lobby_player"
INFO:  "lobby_player": scanned 5937 of 5937 pages, containing 21 live
rows and 609302 dead rows; 21 rows in sample, 21 estimated total rows
VACUUM

Thanks for any help!
-Sebastian



--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to