Unix Technical Forum

Re: insert performance for win32

This is a discussion on Re: insert performance for win32 within the Pgsql Performance forums, part of the PostgreSQL category; --> > "Merlin Moncure" <merlin.moncure@rcsonline.com> writes: > > Nailed it. > > > problem is in mainloop.c -> setup_cancel_handler. Apparently ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > Pgsql Performance

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-19-2008, 06:29 AM
Merlin Moncure
 
Posts: n/a
Default Re: insert performance for win32

> "Merlin Moncure" <merlin.moncure@rcsonline.com> writes:
> > Nailed it.

>
> > problem is in mainloop.c -> setup_cancel_handler. Apparently you

can
> > have multiple handlers and windows keeps track of them all, even if

they
> > do the same thing. Keeping track of so many system handles would
> > naturally slow the whole process down.

>
> Yipes. So we really want to do that only once.
>
> AFAICS it is appropriate to move the sigsetjmp and

setup_cancel_handler
> calls in front of the per-line loop inside MainLoop --- can anyone see
> a reason not to?


hm. mainloop is re-entrant, right? That means each \i would reset the
handler...what is downside to keeping global flag?


> I'm inclined to treat this as an outright bug, not just a minor

certainly...

> performance issue, because it implies that a sufficiently long psql
> script would probably crash a Windows machine.


actually, it's worse than that, it's more of a dos on the whole system,
as windows will eventually stop granting handles, but there is a good
chance of side effects on other applications.

Merlin

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-19-2008, 06:29 AM
Tom Lane
 
Posts: n/a
Default Re: insert performance for win32

"Merlin Moncure" <merlin.moncure@rcsonline.com> writes:
>> AFAICS it is appropriate to move the sigsetjmp and
>> setup_cancel_handler
>> calls in front of the per-line loop inside MainLoop --- can anyone see
>> a reason not to?


> hm. mainloop is re-entrant, right? That means each \i would reset the
> handler...what is downside to keeping global flag?


Ah, right, and in fact I'd missed the comment at line 325 pointing out
that we're relying on the sigsetjmp to be re-executed every time
through. That could be improved on, likely, but not right before a
release.

Does the flag need to be global? I'm thinking

void
setup_cancel_handler(void)
{
+ static bool done = false;
+
+ if (!done)
SetConsoleCtrlHandler(consoleHandler, TRUE);
+ done = true;
}


regards, tom lane

---------------------------(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

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 03:34 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com