Re: Delay INSERT
От | Dawid Kuroczko |
---|---|
Тема | Re: Delay INSERT |
Дата | |
Msg-id | 758d5e7f05032508294c881604@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Delay INSERT (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-general |
On Wed, 23 Mar 2005 12:33:00 -0500, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Dawid Kuroczko <qnex42@gmail.com> writes: > > PostgreSQL doesn't have such issues with blocking, so only difference > > between INSERT and INSERT DELAYED from PostgreSQL's standpoint > > would be waiting and not for the result... > With the right client-side code you can transmit multiple queries before > receiving the result from the first one. I don't think libpq in its > current incarnation really supports this, but in principle it's doable. ...though I think it should be called asynchronic rather than 'delayed'. I.e. issue a statement then select(2) in a spare time to get the result, doing other work in meantime. > The interesting questions have to do with error handling: if the > "delayed" insert fails, what happens and what is the impact on > subsequent queries? I have no idea how MySQL defines that. Well, looking at the on-line mysql docs -- it is not documented, I did however try to issue them (on 3.x mysql installation). I've created a table with a single int PK column, then inserted delayed few values, some of which broke PK contraint and these were silently discared. There was no point checking how it would work with transactions since ...delayed is MyISAM only and these don't do transactions. And as for PostgreSQL and asynchronic statements, I think it should allow Pipelineing -- similar to NNTP or SMTP servers -- these would send N commands to a server and then read them as-they-come-in. Some usage example, imagine a web page which would: $q1 = execute_async("SELECT foo FROM a"); $q2 = execute_async("SELECT * FROM polls LIMIT 5"); # whatever $q3 = execute_async("SELECT baz FROM bazzz"); print some html; print $q1->fetchall, some html $q2->fetchall, $q3->fetchall... There is a question of synchronization and handling errors of course, but I think it could be done and for some usage scenarios could be quite benefitial. Disclaimer: I never wrote a program using libpq, and I only looked through libpq docs some time ago. If I am wrong, please forgive me. Regards, Dawid
В списке pgsql-general по дате отправления: