Re: [SQL] 7.4 - FK constraint performance
От | Stephan Szabo |
---|---|
Тема | Re: [SQL] 7.4 - FK constraint performance |
Дата | |
Msg-id | 20040218075937.T23729@megazone.bigpanda.com обсуждение исходный текст |
Ответ на | Re: [SQL] 7.4 - FK constraint performance (Stephan Szabo <sszabo@megazone.bigpanda.com>) |
Ответы |
Re: [SQL] 7.4 - FK constraint performance
|
Список | pgsql-hackers |
On Sun, 15 Feb 2004, Stephan Szabo wrote: > On Fri, 13 Feb 2004, Stephan Szabo wrote: > > > > > On Fri, 13 Feb 2004, Tom Lane wrote: > > > > > Stephan Szabo <sszabo@megazone.bigpanda.com> writes: > > > > On Fri, 13 Feb 2004, Tom Lane wrote: > > > >> I was looking at that last night. It seems like we could add a LIMIT at > > > >> least in some contexts. In the case at hand, we're just going to error > > > >> out immediately if we find a matching row, and so there's no need for > > > >> FOR UPDATE, is there? > > > > > > > I think there still is, because a not yet committed transaction could have > > > > deleted them all in which case I think the correct behavior is to wait and > > > > if that transaction commits allow the action and if it rolls back to > > > > error. > > > > > > Good point. Okay, we can't put in a LIMIT. But we could still hack the > > > planner to prefer a fast-start plan by passing an out-of-band tuple > > > fraction, for those RI plans where it's appropriate. That would not > > > affect correctness. > > > > Right, I can try to look through the stuff you pointed at in the previous > > message over the weekend. > > It looks to me that we could make this available to SPI fairly simply by > taking the current version of the following four routines: planner, > pg_plan_query, _SPI_execute and SPI_prepare, renaming them and giving them > a planning tuple fraction as a parameter, change references to the other > routines to the new names and then making four new functions with the > current names that call the renamed versions. In all the cases other than > planner I think we can have the new version pass 0.0 and in the case of > planner either 0.1 or 0.0 based on the isCursor parameter. I did this, and changed the foreign keys to use it, but I haven't managed to build a fk case where I could actually detect a change in the plan chosen. Since the queries are only a simple scan on the one table I'm wondering if it's basically just modifying both costs by the same value which means there's no real effect at all.
В списке pgsql-hackers по дате отправления: