Re: Table Inheritance / VARCHAR search question - Mailing list pgsql-general

From Simon_Kelly@moh.govt.nz
Subject Re: Table Inheritance / VARCHAR search question
Date
Msg-id OF8D7B6D49.56DA6294-ONCC2571EF.007B2CFF-CC2571EF.007C75DF@moh.govt.nz
Whole thread Raw
In response to Table Inheritance / VARCHAR search question  (Jonathan Vanasco <postgres@2xlp.com>)
List pgsql-general
I would say that splitting the data will work ok if ( and only if ) you
can remove some duplication of data and therefore reduce disk usage.  If
it won't, it'll  not really save you anything, and it may increase disk
space with the additional db overheads of another set of table meta
information, indexes on the new table etc etc.

I have a similar width table with 7.5M rows ( no nulls ) and I get
reasonable search times running on a 2GHz AMD64 with 2GB ram.

Varchars on disk ( if I remember correctly ) take little or no space when
they are null.  ( A pg developer may need to comment for postgres )  It
definitely is for Oracle ( and a good reason to rebuild tables regularly
if you have a lot of inserts / updates and deletes going on ).

Cheers

Simon

pgsql-general-owner@postgresql.org wrote on 20/09/2006 06:15:03 a.m.:

> Hi,
>
> I'm hoping someone on this list can save me some unnecessary
> benchmarking today
>
> I have the  following table in my system
>
>    BIGSERIAL , INT , INT,  VARCHAR(32)
>
> There are currently 1M records , it will grow to be much much
> bigger.  It's used as a search/dispatch table,  and gets the most
> traffic on my entire app.
>
> I'm working on some new functionality, which will require the same 3
> colums as above but with 3 new VARCHAR(32) columns
>    BIGSERIAL , INT , INT,  +VARCHAR(32) , +VARCHAR(32) , +VARCHAR(32)
>
> ie, the new  function shares the same  serial and the  the 2 INT columns
>
> I'm trying to get this to work efficiently on speed and on disk space.
>
> i've figured that my options are:
>
> a)    one table with everything in it
>    pro:
>       simple
>    possible con:
>       when i had  something similar in mysql 4 years ago, i had to make
> all the varchars chars , because speed was awful.  under this system,
> 80% of the 3 new VARCHAR fields will always be null, so that  disk
> waste will be noticable.  thats only IF there is a speed issue with
> VARCHAR searching.
>
> b) keep current table, create new table that inherits and has the 3
> new fields
>    pro: simple
>    possible con:
>       i can't find any documentation on how an inherit works behind the
> scenes.  is the data cloned into the new table?  is there a join on
> every search?  if this is constantly doing a join behind the  scenes,
> thats probably not going to work for me
>
> c) move to a 3 table structure
>    table1- serial
>    table2 - current table, bigserial is not bigint
>    table3- bigint + 3 varchars
>
>    pro:
>       obviously will work
>    con:
>       a lot of restructuring
>
> i was going to have both table share a seqeunce, but then i
> remembered that the  id is foreign keyed by other tables
>
> if anyone can offer a suggestion, i'd be greatly appreciative
>
> ---------------------------(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


****************************************************************************
Statement of confidentiality: This e-mail message and any accompanying
attachments may contain information that is IN-CONFIDENCE and subject to
legal privilege.
If you are not the intended recipient, do not read, use, disseminate,
distribute or copy this message or attachments.
If you have received this message in error, please notify the sender
immediately and delete this message.
****************************************************************************

*************************************************************************************
This e-mail message has been scanned for Viruses and Content and cleared
by the Ministry of Health's Content and Virus Filtering Gateway
*************************************************************************************

pgsql-general by date:

Previous
From: Gevik Babakhani
Date:
Subject: Re: serial column
Next
From: Lukasz
Date:
Subject: Connecting to PostgreSQL Server