Re: Re: patch: fix performance problems with repated decomprimation of varlena values in plpgsql
От | Pavel Stehule |
---|---|
Тема | Re: Re: patch: fix performance problems with repated decomprimation of varlena values in plpgsql |
Дата | |
Msg-id | AANLkTi=5gnfuqz1_cMZDs-a1XXYYbJ0D96GjgkJGO+Nf@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Re: patch: fix performance problems with repated decomprimation of varlena values in plpgsql (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Re: patch: fix performance problems with repated decomprimation of varlena values in plpgsql
|
Список | pgsql-hackers |
2011/1/18 Tom Lane <tgl@sss.pgh.pa.us>: > Noah Misch <noah@leadboat.com> writes: >> On Sun, Jan 16, 2011 at 06:49:27PM +0100, Pavel Stehule wrote: >>> I am sending a updated version with little bit more comments. But I am >>> sure, so somebody with good English have to edit my comments. >>> Minimally I hope, so your questions will be answered. > >> Thanks. I edited the comments and white space somewhat, as attached. I'll go >> ahead and mark it Ready for Committer. > > I looked at this patch and found it fairly awkward. What is the point > of adding an additional flag to every variable, as opposed to just > forcibly detoasting during assignment? If it's to avoid detoasting when > the variable is read in a way that doesn't require detoasting, it fails > rather completely IMO, since exec_eval_datum certainly doesn't know > that. I am not sure about false overhead of detoasting. This is a safe variant. I don't would to decrease performance. Not sure if it's necessary. But detoasting on assignment isn't enought: some most simple example - searching a maximum for i in array_lower(a,1) .. array_upper(a,1) loop if x < a[i] then x = a[i]; end if; end loop; in this cycle the variable a wasn't modified. Any access to this variable means a detoast and decompres. So there is necessary to modify a process. Detoast not on assign, but detoast on usage. Regards Pavel Stehule > > The added memory context variable seems redundant as well. I didn't find a pointer on top execution context available from execution state. I am sure, so we have to switch to this context explicitly. Regards Pavel Stehule > > regards, tom lane >
В списке pgsql-hackers по дате отправления: