Unix Technical Forum

can't shrink relation

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 ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > Pgsql Performance

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-19-2008, 11:38 AM
Sabin Coanda
 
Posts: n/a
Default can't shrink relation

Hi there,

I have a database with lowest possible activity. I run VACUUM FULL AND I get
the following log result:


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-19-2008, 11:38 AM
Sabin Coanda
 
Posts: n/a
Default Re: can't shrink relation

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


Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-19-2008, 11:38 AM
Richard Huxton
 
Posts: n/a
Default Re: can't shrink relation

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

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 04-19-2008, 11:38 AM
Guillaume Cottenceau
 
Posts: n/a
Default Re: can't shrink relation

"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

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 05:54 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.UnixAdminTalk.com