| From: | Craig Ringer <craig(at)postnewspapers(dot)com(dot)au> |
|---|---|
| To: | Miernik <public(at)public(dot)miernik(dot)name> |
| Cc: | pgsql-performance(at)postgresql(dot)org |
| Subject: | Re: how to fix problem then when two queries run at the same time, it takes longer to complete then if run in sequence |
| Date: | 2008-07-31 10:24:32 |
| Message-ID: | 489192E0.9010309@postnewspapers.com.au |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-performance |
Miernik wrote:
> BTW, doesn't there exist any tool does what "psql -c" does, but is
> written in plain C, not perl? I was looking for such psql replacement,
> but couldn't find any.
As others have noted, psql is written in C, and you're using a wrapper.
Assuming your're on Debian or similar you should be able to invoke the
real psql with:
/usr/lib/postgresql/8.3/bin/psql
psql is a C executable that uses libpq directly, and is really rather
low-overhead and fast.
As for how to issue multiple commands in one statement in a shell
script: one way is to use a here document instead of "-c". Eg:
psql <<__END__
UPDATE blah SET thingy = 7 WHERE otherthingy = 4;
DELETE FROM sometable WHERE criterion = -1;
__END__
You can of course wrap statements in explicit transaction BEGIN/COMMIT,
etc, as appropriate.
As you start doing more complex things, and especially once you start
wanting to have both good performance *and* good error handling, you'll
want to move away from sql scripts with psql and toward using perl,
python, or similar so you can use their native interfaces to libpq.
--
Craig Ringer
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Steve Crawford | 2008-07-31 15:30:35 | Re: how to fix problem then when two queries run at the same time, it takes longer to complete then if run in sequence |
| Previous Message | Theo Kramer | 2008-07-31 09:52:12 | Re: how to fix problem then when two queries run at the same time, it takes longer to complete then if run in sequence |