patch submitted on -hackers list.
http://www.postgresql.org/message-id/CAP_rwwn2z0gPOn8GuQ3qDVS5+HgEcG2EzEOyiJtcA=vpdeh...@mail.gmail.com

results after the patch:

trigger= BEGIN RETURN NULL; END
rows=40000
      228ms COPY test.tab FROM '/tmp/test.dat'
      205ms COPY test.tab FROM '/tmp/test.dat'
rows=80000
      494ms COPY test.tab FROM '/tmp/test.dat'
      395ms COPY test.tab FROM '/tmp/test.dat'
rows=120000
      678ms COPY test.tab FROM '/tmp/test.dat'
      652ms COPY test.tab FROM '/tmp/test.dat'
rows=160000
      956ms COPY test.tab FROM '/tmp/test.dat'
      822ms COPY test.tab FROM '/tmp/test.dat'
rows=200000
     1184ms COPY test.tab FROM '/tmp/test.dat'
     1072ms COPY test.tab FROM '/tmp/test.dat'
trigger= BEGIN PERFORM pg_notify('test',NEW.id::text); RETURN NULL; END
rows=40000
      440ms COPY test.tab FROM '/tmp/test.dat'
      406ms COPY test.tab FROM '/tmp/test.dat'
rows=80000
      887ms COPY test.tab FROM '/tmp/test.dat'
      769ms COPY test.tab FROM '/tmp/test.dat'
rows=120000
     1346ms COPY test.tab FROM '/tmp/test.dat'
     1171ms COPY test.tab FROM '/tmp/test.dat'
rows=160000
     1710ms COPY test.tab FROM '/tmp/test.dat'
     1709ms COPY test.tab FROM '/tmp/test.dat'
rows=200000
     2189ms COPY test.tab FROM '/tmp/test.dat'
     2206ms COPY test.tab FROM '/tmp/test.dat'



On Fri, Feb 5, 2016 at 1:45 PM, Filip Rembiałkowski <
filip.rembialkow...@gmail.com> wrote:

> On Thu, Feb 4, 2016 at 11:41 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
>
>> =?UTF-8?Q?Filip_Rembia=C5=82kowski?= <filip.rembialkow...@gmail.com>
>> writes:
>> > A table has a trigger.
>> > The trigger sends a NOTIFY.
>> > Test with COPY FROM shows non-linear correlation between number of
>> inserted
>> > rows and COPY duration.
>>
>> No surprise, see AsyncExistsPendingNotify.  You would have a lot of other
>> performance issues with sending hundreds of thousands of distinct notify
>> events from one transaction anyway, so I can't get terribly excited about
>> this.
>>
>
>
> What kind of issues? Do you mean, problems in postgres or problems in
> client?
>
> Is there an additional non-linear cost on COMMIT (extra to the cost I
> already showed)?
>
> The 8GB internal queue (referenced in a Note at
> http://www.postgresql.org/docs/current/static/sql-notify.html) should be
> able to keep ~ 1E8 such notifications (assumed one notification will fit in
> 80 bytes).
>
> On client side, this seems legit - the LISTENer deamon will collect these
> notifications and process them in line.
> There might be no LISTENer running at all.
>
> Still, the main problem I get with this approach is quadratic cost on big
> insert transactions.
> I wonder if this behavior is possible to change in future postgres
> versions. And how much programming work does it require.
>
> Is duplicate-elimination a fundamental, non-negotiable requirement?
>
>
>
> Thank you,
> Filip
>
>

Reply via email to