Thread

  1. psql \dt and table size

    Bernd Helmle <mailings@oopsware.de> — 2011-03-21T17:44:51Z

    It stroke me today again, that \dt+ isn't displaying the acurate table size 
    for tables, since it uses pg_relation_size() till now. With having 
    pg_table_size() since PostgreSQL 9.0 available, i believe it would be more 
    useful to have the total acquired storage displayed, including implicit 
    objects (the mentioned case where it was not very useful atm was a table 
    with a big TOAST table).
    
    Attached minor patch extends \dt to use pg_table_size() starting with 
    PostgreSQL 9.0, not sure if we backport such changes though. It would be 
    interesting for 9.1, however.
    
    -- 
    Thanks
    
    	Bernd
  2. Re: psql \dt and table size

    David Fetter <david@fetter.org> — 2011-03-21T23:32:09Z

    +1 for fixing this behavior in 9.1.  -1 for changing in 9.0, as the
    change in behavior mid-release will cause more confusion than the
    incomplete accounting does.
    
    Cheers,
    David.
    On Mon, Mar 21, 2011 at 06:44:51PM +0100, Bernd Helmle wrote:
    > It stroke me today again, that \dt+ isn't displaying the acurate
    > table size for tables, since it uses pg_relation_size() till now.
    > With having pg_table_size() since PostgreSQL 9.0 available, i
    > believe it would be more useful to have the total acquired storage
    > displayed, including implicit objects (the mentioned case where it
    > was not very useful atm was a table with a big TOAST table).
    > 
    > Attached minor patch extends \dt to use pg_table_size() starting
    > with PostgreSQL 9.0, not sure if we backport such changes though. It
    > would be interesting for 9.1, however.
    > 
    > -- 
    > Thanks
    > 
    > 	Bernd
    
    
    > 
    > -- 
    > Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
    > To make changes to your subscription:
    > http://www.postgresql.org/mailpref/pgsql-hackers
    
    
    -- 
    David Fetter <david@fetter.org> http://fetter.org/
    Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
    Skype: davidfetter      XMPP: david.fetter@gmail.com
    iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics
    
    Remember to vote!
    Consider donating to Postgres: http://www.postgresql.org/about/donate
    
    
  3. Re: psql \dt and table size

    Cédric Villemain <cedric.villemain.debian@gmail.com> — 2011-03-22T16:47:39Z

    2011/3/22 David Fetter <david@fetter.org>:
    > +1 for fixing this behavior in 9.1.  -1 for changing in 9.0, as the
    > change in behavior mid-release will cause more confusion than the
    > incomplete accounting does.
    
    Idem.
    
    
    >
    > Cheers,
    > David.
    > On Mon, Mar 21, 2011 at 06:44:51PM +0100, Bernd Helmle wrote:
    >> It stroke me today again, that \dt+ isn't displaying the acurate
    >> table size for tables, since it uses pg_relation_size() till now.
    >> With having pg_table_size() since PostgreSQL 9.0 available, i
    >> believe it would be more useful to have the total acquired storage
    >> displayed, including implicit objects (the mentioned case where it
    >> was not very useful atm was a table with a big TOAST table).
    >>
    >> Attached minor patch extends \dt to use pg_table_size() starting
    >> with PostgreSQL 9.0, not sure if we backport such changes though. It
    >> would be interesting for 9.1, however.
    >>
    >> --
    >> Thanks
    >>
    >>       Bernd
    >
    >
    >>
    >> --
    >> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
    >> To make changes to your subscription:
    >> http://www.postgresql.org/mailpref/pgsql-hackers
    >
    >
    > --
    > David Fetter <david@fetter.org> http://fetter.org/
    > Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
    > Skype: davidfetter      XMPP: david.fetter@gmail.com
    > iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics
    >
    > Remember to vote!
    > Consider donating to Postgres: http://www.postgresql.org/about/donate
    >
    > --
    > Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
    > To make changes to your subscription:
    > http://www.postgresql.org/mailpref/pgsql-hackers
    >
    
    
    
    -- 
    Cédric Villemain               2ndQuadrant
    http://2ndQuadrant.fr/     PostgreSQL : Expertise, Formation et Support
    
    
  4. Re: psql \dt and table size

    Susanne Ebrecht <susanne@2ndquadrant.com> — 2011-03-23T19:22:20Z

    Hello Bernd,
    
    On 21.03.2011 18:44, Bernd Helmle wrote:
    >
    > Attached minor patch extends \dt to use pg_table_size() starting with 
    > PostgreSQL 9.0, not sure if we backport such changes though. It would 
    > be interesting for 9.1, however. 
    
    As I already told you:
    
    I tested and it worked.
    The code looks correct to me.
    
    You just should send the code to a beauty farm - the wrinkles (braces) 
    could get placed better also it could be more. :)
    
    Susanne
    
    -- 
    Susanne Ebrecht - 2ndQuadrant
    PostgreSQL Development, 24x7 Support, Training and Services
    www.2ndQuadrant.com
    
    
    
  5. Re: psql \dt and table size

    Robert Haas <robertmhaas@gmail.com> — 2011-03-23T20:24:59Z

    On Mon, Mar 21, 2011 at 1:44 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    > It stroke me today again, that \dt+ isn't displaying the acurate table size
    > for tables, since it uses pg_relation_size() till now. With having
    > pg_table_size() since PostgreSQL 9.0 available, i believe it would be more
    > useful to have the total acquired storage displayed, including implicit
    > objects (the mentioned case where it was not very useful atm was a table
    > with a big TOAST table).
    
    I guess the threshold question for this patch is whether
    pg_table_size() is a "more accurate" table size or just a different
    one.  It could possible be confusing to display one value in that
    column when the server is >= 9.0 and the client is >= 9.1, and a
    different value when the server is < 9.0 or the client is < 9.1.
    
    On the other hand, it's clear that there are several people in favor
    of this change, so maybe we should just go ahead and do it.  Not sure.
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  6. Re: psql \dt and table size

    Alvaro Herrera <alvherre@commandprompt.com> — 2011-03-23T20:33:46Z

    Excerpts from Robert Haas's message of mié mar 23 17:24:59 -0300 2011:
    > On Mon, Mar 21, 2011 at 1:44 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    > > It stroke me today again, that \dt+ isn't displaying the acurate table size
    > > for tables, since it uses pg_relation_size() till now. With having
    > > pg_table_size() since PostgreSQL 9.0 available, i believe it would be more
    > > useful to have the total acquired storage displayed, including implicit
    > > objects (the mentioned case where it was not very useful atm was a table
    > > with a big TOAST table).
    > 
    > I guess the threshold question for this patch is whether
    > pg_table_size() is a "more accurate" table size or just a different
    > one.
    
    Not including the toast table and index in the size is just plain wrong.
    Reporting the size without the toast objects is an implementation
    artifact that should not be done unless explicitely requested.
    
    -- 
    Álvaro Herrera <alvherre@commandprompt.com>
    The PostgreSQL Company - Command Prompt, Inc.
    PostgreSQL Replication, Consulting, Custom Development, 24x7 support
    
    
  7. Re: psql \dt and table size

    Pavel Stehule <pavel.stehule@gmail.com> — 2011-03-23T20:50:36Z

    2011/3/23 Alvaro Herrera <alvherre@commandprompt.com>:
    > Excerpts from Robert Haas's message of mié mar 23 17:24:59 -0300 2011:
    >> On Mon, Mar 21, 2011 at 1:44 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    >> > It stroke me today again, that \dt+ isn't displaying the acurate table size
    >> > for tables, since it uses pg_relation_size() till now. With having
    >> > pg_table_size() since PostgreSQL 9.0 available, i believe it would be more
    >> > useful to have the total acquired storage displayed, including implicit
    >> > objects (the mentioned case where it was not very useful atm was a table
    >> > with a big TOAST table).
    >>
    >> I guess the threshold question for this patch is whether
    >> pg_table_size() is a "more accurate" table size or just a different
    >> one.
    >
    > Not including the toast table and index in the size is just plain wrong.
    > Reporting the size without the toast objects is an implementation
    > artifact that should not be done unless explicitely requested.
    
    +1
    
    can we enhance a detail for table and show more accurate numbers?
    
    table size: xxx
    toast size: xxx
    indexes size: xxx
    
    Regards
    
    Pavel Stehule
    
    
    >
    > --
    > Álvaro Herrera <alvherre@commandprompt.com>
    > The PostgreSQL Company - Command Prompt, Inc.
    > PostgreSQL Replication, Consulting, Custom Development, 24x7 support
    >
    > --
    > Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
    > To make changes to your subscription:
    > http://www.postgresql.org/mailpref/pgsql-hackers
    >
    
    
  8. Re: psql \dt and table size

    Robert Haas <robertmhaas@gmail.com> — 2011-03-24T21:44:10Z

    On Wed, Mar 23, 2011 at 4:50 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
    > 2011/3/23 Alvaro Herrera <alvherre@commandprompt.com>:
    >> Excerpts from Robert Haas's message of mié mar 23 17:24:59 -0300 2011:
    >>> On Mon, Mar 21, 2011 at 1:44 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    >>> > It stroke me today again, that \dt+ isn't displaying the acurate table size
    >>> > for tables, since it uses pg_relation_size() till now. With having
    >>> > pg_table_size() since PostgreSQL 9.0 available, i believe it would be more
    >>> > useful to have the total acquired storage displayed, including implicit
    >>> > objects (the mentioned case where it was not very useful atm was a table
    >>> > with a big TOAST table).
    >>>
    >>> I guess the threshold question for this patch is whether
    >>> pg_table_size() is a "more accurate" table size or just a different
    >>> one.
    >>
    >> Not including the toast table and index in the size is just plain wrong.
    >> Reporting the size without the toast objects is an implementation
    >> artifact that should not be done unless explicitely requested.
    >
    > +1
    >
    > can we enhance a detail for table and show more accurate numbers?
    >
    > table size: xxx
    > toast size: xxx
    > indexes size: xxx
    
    Only if we don't mind going beyond 80 columns.
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  9. Re: psql \dt and table size

    Pavel Stehule <pavel.stehule@gmail.com> — 2011-03-25T05:48:49Z

    2011/3/24 Robert Haas <robertmhaas@gmail.com>:
    > On Wed, Mar 23, 2011 at 4:50 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
    >> 2011/3/23 Alvaro Herrera <alvherre@commandprompt.com>:
    >>> Excerpts from Robert Haas's message of mié mar 23 17:24:59 -0300 2011:
    >>>> On Mon, Mar 21, 2011 at 1:44 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    >>>> > It stroke me today again, that \dt+ isn't displaying the acurate table size
    >>>> > for tables, since it uses pg_relation_size() till now. With having
    >>>> > pg_table_size() since PostgreSQL 9.0 available, i believe it would be more
    >>>> > useful to have the total acquired storage displayed, including implicit
    >>>> > objects (the mentioned case where it was not very useful atm was a table
    >>>> > with a big TOAST table).
    >>>>
    >>>> I guess the threshold question for this patch is whether
    >>>> pg_table_size() is a "more accurate" table size or just a different
    >>>> one.
    >>>
    >>> Not including the toast table and index in the size is just plain wrong.
    >>> Reporting the size without the toast objects is an implementation
    >>> artifact that should not be done unless explicitely requested.
    >>
    >> +1
    >>
    >> can we enhance a detail for table and show more accurate numbers?
    >>
    >> table size: xxx
    >> toast size: xxx
    >> indexes size: xxx
    >
    > Only if we don't mind going beyond 80 columns.
    >
    
    sure, it is on new lines
    
    Pavel
    
    > --
    > Robert Haas
    > EnterpriseDB: http://www.enterprisedb.com
    > The Enterprise PostgreSQL Company
    >
    
    
  10. Re: psql \dt and table size

    Alvaro Herrera <alvherre@commandprompt.com> — 2011-03-25T15:55:52Z

    Excerpts from Pavel Stehule's message of vie mar 25 02:48:49 -0300 2011:
    > 2011/3/24 Robert Haas <robertmhaas@gmail.com>:
    > > On Wed, Mar 23, 2011 at 4:50 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
    
    > >> can we enhance a detail for table and show more accurate numbers?
    > >>
    > >> table size: xxx
    > >> toast size: xxx
    > >> indexes size: xxx
    > >
    > > Only if we don't mind going beyond 80 columns.
    > 
    > sure, it is on new lines
    
    That could get very long ... are you proposing something like 
    \d++ ?
    
    -- 
    Álvaro Herrera <alvherre@commandprompt.com>
    The PostgreSQL Company - Command Prompt, Inc.
    PostgreSQL Replication, Consulting, Custom Development, 24x7 support
    
    
  11. Re: psql \dt and table size

    Pavel Stehule <pavel.stehule@gmail.com> — 2011-03-25T16:17:08Z

    2011/3/25 Alvaro Herrera <alvherre@commandprompt.com>:
    > Excerpts from Pavel Stehule's message of vie mar 25 02:48:49 -0300 2011:
    >> 2011/3/24 Robert Haas <robertmhaas@gmail.com>:
    >> > On Wed, Mar 23, 2011 at 4:50 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
    >
    >> >> can we enhance a detail for table and show more accurate numbers?
    >> >>
    >> >> table size: xxx
    >> >> toast size: xxx
    >> >> indexes size: xxx
    >> >
    >> > Only if we don't mind going beyond 80 columns.
    >>
    >> sure, it is on new lines
    >
    > That could get very long ... are you proposing something like
    > \d++ ?
    
    \d++ is good idea. I don't thing so it's necessary for detail about
    sizes. But it can be used for super detail:
    
    * sizes of all indexes
    * statistics of usage
    * statistics of indexes
    
    maybe - it is just idea.
    
    Pavel
    
    
    >
    > --
    > Álvaro Herrera <alvherre@commandprompt.com>
    > The PostgreSQL Company - Command Prompt, Inc.
    > PostgreSQL Replication, Consulting, Custom Development, 24x7 support
    >
    
    
  12. Re: psql \dt and table size

    Robert Haas <robertmhaas@gmail.com> — 2011-03-27T01:42:53Z

    On Wed, Mar 23, 2011 at 4:33 PM, Alvaro Herrera
    <alvherre@commandprompt.com> wrote:
    > Excerpts from Robert Haas's message of mié mar 23 17:24:59 -0300 2011:
    >> On Mon, Mar 21, 2011 at 1:44 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    >> > It stroke me today again, that \dt+ isn't displaying the acurate table size
    >> > for tables, since it uses pg_relation_size() till now. With having
    >> > pg_table_size() since PostgreSQL 9.0 available, i believe it would be more
    >> > useful to have the total acquired storage displayed, including implicit
    >> > objects (the mentioned case where it was not very useful atm was a table
    >> > with a big TOAST table).
    >>
    >> I guess the threshold question for this patch is whether
    >> pg_table_size() is a "more accurate" table size or just a different
    >> one.
    >
    > Not including the toast table and index in the size is just plain wrong.
    > Reporting the size without the toast objects is an implementation
    > artifact that should not be done unless explicitely requested.
    
    It sounds like everyone is in agreement that we should go ahead and
    commit this patch, so I'll go do that.
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  13. Re: psql \dt and table size

    Robert Haas <robertmhaas@gmail.com> — 2011-03-27T01:59:18Z

    On Sat, Mar 26, 2011 at 9:42 PM, Robert Haas <robertmhaas@gmail.com> wrote:
    > On Wed, Mar 23, 2011 at 4:33 PM, Alvaro Herrera
    > <alvherre@commandprompt.com> wrote:
    >> Excerpts from Robert Haas's message of mié mar 23 17:24:59 -0300 2011:
    >>> On Mon, Mar 21, 2011 at 1:44 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    >>> > It stroke me today again, that \dt+ isn't displaying the acurate table size
    >>> > for tables, since it uses pg_relation_size() till now. With having
    >>> > pg_table_size() since PostgreSQL 9.0 available, i believe it would be more
    >>> > useful to have the total acquired storage displayed, including implicit
    >>> > objects (the mentioned case where it was not very useful atm was a table
    >>> > with a big TOAST table).
    >>>
    >>> I guess the threshold question for this patch is whether
    >>> pg_table_size() is a "more accurate" table size or just a different
    >>> one.
    >>
    >> Not including the toast table and index in the size is just plain wrong.
    >> Reporting the size without the toast objects is an implementation
    >> artifact that should not be done unless explicitely requested.
    >
    > It sounds like everyone is in agreement that we should go ahead and
    > commit this patch, so I'll go do that.
    
    Err, wait a minute.  This can't be quite right: showTables isn't
    mutually exclusive with other options; we don't want to display the
    size using pg_relation_size() when someone says:
    
    \dts
    
    and pg_table_size() when they say:
    
    \dt
    
    and pg_relation_size() when they say:
    
    \ds
    
    But I think we can just call pg_table_size() regardless in 9.0+; I
    believe it'll return the same results as pg_relation_size() on
    non-tables.  Anyone see a problem with that?
    
    Also, for clarity, the 9.0+ code should go first, like this:
    
    if (pset.sversion >= 90000)
    {
        /* do stuff */
    }
    else if (pset.sversion >= 81000
    {
        /* do different stuff */
    }
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  14. Re: psql \dt and table size

    Bernd Helmle <mailings@oopsware.de> — 2011-03-28T12:38:23Z

    
    --On 26. März 2011 21:59:18 -0400 Robert Haas <robertmhaas@gmail.com> 
    wrote:
    
    > But I think we can just call pg_table_size() regardless in 9.0+; I
    > believe it'll return the same results as pg_relation_size() on
    > non-tables.  Anyone see a problem with that?
    
    Hmm yeah, seems i was thinking too complicated...here is a cleaned up 
    version of this idea.
    
    -- 
    Thanks
    
    	Bernd
  15. Re: psql \dt and table size

    Bernd Helmle <mailings@oopsware.de> — 2011-04-07T19:03:37Z

    
    --On 28. März 2011 13:38:23 +0100 Bernd Helmle <mailings@oopsware.de> wrote:
    
    >> But I think we can just call pg_table_size() regardless in 9.0+; I
    >> believe it'll return the same results as pg_relation_size() on
    >> non-tables.  Anyone see a problem with that?
    >
    > Hmm yeah, seems i was thinking too complicated...here is a cleaned up version
    > of this idea.
    
    Do we consider this for 9.1 or should I add this to the CF-Next for 9.2?
    
    -- 
    Thanks
    
    	Bernd
    
    
  16. Re: psql \dt and table size

    Robert Haas <robertmhaas@gmail.com> — 2011-04-08T19:56:11Z

    On Thu, Apr 7, 2011 at 3:03 PM, Bernd Helmle <mailings@oopsware.de> wrote:
    > --On 28. März 2011 13:38:23 +0100 Bernd Helmle <mailings@oopsware.de> wrote:
    >>> But I think we can just call pg_table_size() regardless in 9.0+; I
    >>> believe it'll return the same results as pg_relation_size() on
    >>> non-tables.  Anyone see a problem with that?
    >>
    >> Hmm yeah, seems i was thinking too complicated...here is a cleaned up
    >> version
    >> of this idea.
    >
    > Do we consider this for 9.1 or should I add this to the CF-Next for 9.2?
    
    Since there were quite a few votes for doing this in 9.1, no
    dissenting votes, and it's a very small change, I went ahead and
    committed it.
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company