This is a discussion on can't shrink relation within the Pgsql Performance forums, part of the PostgreSQL category; --> Hi there, I have a database with lowest possible activity. I run VACUUM FULL AND I get the following ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| |||
| sorry for the previous incomplete post. I continue with the log: NOTICE: relation "pg_shdepend" TID 11/1: DeleteTransactionInProgress 2657075 --- can't shrink relation NOTICE: relation "pg_shdepend" TID 11/2: DeleteTransactionInProgress 2657075 --- can't shrink relation ...... NOTICE: relation "pg_shdepend" TID 36/93: DeleteTransactionInProgress 2658105 --- can't shrink relation What happen ? What I have to do ? I notice that I don't get such messages when I run just VACUUM without FULL option. TIA, Sabin |
| |||
| Sabin Coanda wrote: > sorry for the previous incomplete post. I continue with the log: Not really a performance question, this. Perhaps general/admin lists would be better next time. No matter... > NOTICE: relation "pg_shdepend" TID 11/1: DeleteTransactionInProgress > 2657075 --- can't shrink relation > NOTICE: relation "pg_shdepend" TID 11/2: DeleteTransactionInProgress > 2657075 --- can't shrink relation > ..... > NOTICE: relation "pg_shdepend" TID 36/93: DeleteTransactionInProgress > 2658105 --- can't shrink relation > > What happen ? What I have to do ? This is where having a copy of the source pays off. cd to the top-level of your source and type: find . -type f | xargs grep 'shrink relation' Amongst the translation files you'll see .../backend/commands/vacuum.c A quick search in there reveals... case HEAPTUPLE_DELETE_IN_PROGRESS: /* * This should not happen, since we hold exclusive lock on * the relation; shouldn't we raise an error? (Actually, * it can happen in system catalogs, since we tend to * release write lock before commit there.) */ ereport(NOTICE, (errmsg("relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- can't shrink relation", relname, blkno, offnum, HeapTupleHeaderGetXmax(tuple.t_data)))); do_shrinking = false; So - it's wants to shrink a table but there is a delete in progress so it can't do so safely. This shouldn't happen unless it's a system table, and checking your error message, we're looking at pg_shdepend which is indeed a system table. > I notice that I don't get such messages when I run just VACUUM without FULL > option. That's because VACUUM doesn't reclaim space, it just marks blocks as available for re-use. If you insert 2 million rows and then delete 1 million, your table will have 1 million gaps. A vacuum will try and track those gaps (see your "free space map" settings in postgresql.conf) whereas a vacuum-full will actually move rows around and then shrink the size of the file on-disk once all the gaps are together at the end of the file. A vacuum full needs to lock the table, since it's moving rows around. HTH -- Richard Huxton Archonet Ltd ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| ||||
| "Sabin Coanda" <sabin.coanda 'at' deuromedia.ro> writes: > sorry for the previous incomplete post. I continue with the log: > > NOTICE: relation "pg_shdepend" TID 11/1: DeleteTransactionInProgress > 2657075 --- can't shrink relation > NOTICE: relation "pg_shdepend" TID 11/2: DeleteTransactionInProgress > 2657075 --- can't shrink relation > ..... > NOTICE: relation "pg_shdepend" TID 36/93: DeleteTransactionInProgress > 2658105 --- can't shrink relation > > > What happen ? What I have to do ? You have to use google. First match to "postgresql can't shrink relation" (almost) returns: http://archives.postgresql.org/pgsql...2/msg00126.php -- Guillaume Cottenceau, MNC Mobile News Channel SA, an Alcatel-Lucent Company Av. de la Gare 10, 1003 Lausanne, Switzerland - direct +41 21 317 50 36 ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@postgresql.org so that your message can get through to the mailing list cleanly |
| Thread Tools | |
| Display Modes | |
|
|