Re: About partitioning - Mailing list pgsql-general

From Adrian von Bidder
Subject Re: About partitioning
Date
Msg-id 201001201701.25689@fortytwo.ch
Whole thread Raw
In response to Re: About partitioning  (Vincenzo Romano <vincenzo.romano@notorand.it>)
Responses Re: About partitioning  (Vincenzo Romano <vincenzo.romano@notorand.it>)
List pgsql-general
Hi,

On Wednesday 20 January 2010 11.57:37 Vincenzo Romano wrote:
> 2010/1/20 Adrian von Bidder <avbidder@fortytwo.ch>:

> > [ creating db partitions on demand ]
> >
> > On Wednesday 20 January 2010 11.20:21 Vincenzo Romano wrote:
> >> In case 1 I need to inspect the catalog with at least a select, while
> >> in case 2 I need to trap errors.
> >> In my (little) experience trapping errors is slow, so I would go for
> >>  option 1.
> >
> > Trapping/handling the error might be slow, but remember that creating a
> > new partition (presumably) doesn't happen often (and creating the
> > partition is slow anyway.)

> Hmmm ... also trapping would happen for every single line being inserted

Why?

By "trapping" I mean: reacting to the error if the INSERT statement fails.
If the INSERT does not fail, there is no error, so there is no error
condition to handle.

Compare:

 * query server to see if partition exists
   (!!! slow: this uses the database server)
 * if partition does not exist (this is almost never the case), create it
 * insert row

Against:

 * try inserting (same speed as the final step above)
 * if (error)
   (this is fast, since it only uses the return value from the insert.  No
additional database action)
   -> then create partition (this, again, is slow but almost never happens)
   -> and then re-try the insert.

cheers
-- vbi

--
featured link: Debian Bookmark Collection - http://bookmarks.debian.net/

Attachment

pgsql-general by date:

Previous
From: Andreas Kretschmer
Date:
Subject: Re: function to grant select on all tables in several schemas
Next
From: Vincenzo Romano
Date:
Subject: Re: About partitioning