measuring disk usage of records
We've had a chance to talk to some of our competitors who have recently gone
out of business. One of the major failings that contributed to their
collapse was not accurately understanding how much disk space and bandwidth
they were using up. Therefore, they often lost money unexpectedly which, as
most of you know, is not sustainable.
Therefore, we'd like to avoid falling into the same trap and get a good
understanding of how much storage space our customer's data is actually
using.
Here's the problem... A customer's data may be scattered across multiple
tables. Some customers have X,000 records in table A, some have Y,000
records in table B and etc. There's no way it can be as simple as saying
"database takes X GB for Y customers so usage is X/Y"
Does anyone have any suggestions that can help me to get access to this
information?
Matthew Nuzum | ISPs: Make $200 - $5,000 per referral by
www.followers.net | recomending Elite CMS to your customers!
matt@followers.net | http://www.followers.net/isp
Use contrib/dbsize, then you'll be able to
select relation_size('<table_name>');
select database_size('<database_name>');
Answers come back in bytes....
If the customer records are mixed with different customer
data in the same tables, it's a bit more complicated.
Matthew Nuzum wrote:
Therefore, we'd like to avoid falling into the same trap and get a good
understanding of how much storage space our customer's data is actually
using.Here's the problem... A customer's data may be scattered across multiple
tables. Some customers have X,000 records in table A, some have Y,000
records in table B and etc. There's no way it can be as simple as saying
"database takes X GB for Y customers so usage is X/Y"Does anyone have any suggestions that can help me to get access to this
information?
--
P. J. "Josh" Rovero Sonalysts, Inc.
Email: rovero@sonalysts.com www.sonalysts.com 215 Parkway North
Work: (860)326-3671 or 442-4355 Waterford CT 06385
***********************************************************************
Thanks for the very quick reply... I didn't know about the dbsize stuff,
they may help. Unfortunately, the records are mixed together.
I may have to use some judicious estimating... I'm just wondering if there's
something more scientific.
Matthew Nuzum | ISPs: Make $200 - $5,000 per referral by
www.followers.net | recomending Elite CMS to your customers!
matt@followers.net | http://www.followers.net/isp
-----Original Message-----
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] On Behalf Of P.J. "Josh" Rovero
Sent: Wednesday, December 31, 2003 4:20 PM
To: Matthew Nuzum
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] measuring disk usage of records
Use contrib/dbsize, then you'll be able to
select relation_size('<table_name>');
select database_size('<database_name>');
Answers come back in bytes....
If the customer records are mixed with different customer
data in the same tables, it's a bit more complicated.
Matthew Nuzum wrote:
Therefore, we'd like to avoid falling into the same trap and get a good
understanding of how much storage space our customer's data is actually
using.Here's the problem... A customer's data may be scattered across multiple
tables. Some customers have X,000 records in table A, some have Y,000
records in table B and etc. There's no way it can be as simple as saying
"database takes X GB for Y customers so usage is X/Y"Does anyone have any suggestions that can help me to get access to this
information?
--
P. J. "Josh" Rovero Sonalysts, Inc.
Email: rovero@sonalysts.com www.sonalysts.com 215 Parkway North
Work: (860)326-3671 or 442-4355 Waterford CT 06385
***********************************************************************
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings
Thanks for the very quick reply... I didn't know about the dbsize stuff,
they may help. Unfortunately, the records are mixed together.
If user tables are grouped by schema, you should be able to pull the
dbsize data by schema.
That raises an interesting question. Can pg be configured so
that user tables MUST be in user schemas, i.e., nobody can put tables
in the PUBLIC schema?
--
Mike Nolan
On Wed, 31 Dec 2003, Mike Nolan wrote:
That raises an interesting question. Can pg be configured so
that user tables MUST be in user schemas, i.e., nobody can put tables
in the PUBLIC schema?
Sure, you can simply drop the public schema, or "revoke all on schema
public from public";
Kris Jurka
"Matthew Nuzum" <cobalt@bearfruit.org> writes:
Thanks for the very quick reply... I didn't know about the dbsize stuff,
they may help. Unfortunately, the records are mixed together.
When measuring the on-disk size of a table, don't forget to include its
indexes and its toast table (and the toast table's index).
If you are using large objects, you'll also need to think sbout charging
for the space occupied by pg_largeobject.
regards, tom lane
If you have a language installed (like pl/pgsql), then dropping the public
schema also drops the language. Ouch.
Maybe there is a solution to that one though...
John Sidney-Woollett
Kris Jurka said:
Show quoted text
On Wed, 31 Dec 2003, Mike Nolan wrote:
That raises an interesting question. Can pg be configured so
that user tables MUST be in user schemas, i.e., nobody can put tables
in the PUBLIC schema?Sure, you can simply drop the public schema, or "revoke all on schema
public from public";Kris Jurka
---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend