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/