Hi. 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. Table "test.tab" Column | Type | Modifiers ---------+---------+------------------------------------------------------- id | integer | not null default nextval('test.tab_id_seq'::regclass) payload | text | Indexes: "tab_pkey" PRIMARY KEY, btree (id) Triggers: trg AFTER INSERT ON test.tab FOR EACH ROW EXECUTE PROCEDURE test.fun() Test Series 1. Trigger code: BEGIN RETURN NULL; END You can see linear scaling. rows=40000 191ms COPY test.tab FROM '/tmp/test.dat' 201ms COPY test.tab FROM '/tmp/test.dat' rows=80000 426ms COPY test.tab FROM '/tmp/test.dat' 415ms COPY test.tab FROM '/tmp/test.dat' rows=120000 634ms COPY test.tab FROM '/tmp/test.dat' 616ms COPY test.tab FROM '/tmp/test.dat' rows=160000 843ms COPY test.tab FROM '/tmp/test.dat' 834ms COPY test.tab FROM '/tmp/test.dat' rows=200000 1101ms COPY test.tab FROM '/tmp/test.dat' 1094ms COPY test.tab FROM '/tmp/test.dat' Test Series 2. Trigger code: BEGIN PERFORM pg_notify('test',NEW.id::text); RETURN NULL; You can see non-linear scaling. rows=40000 9767ms COPY test.tab FROM '/tmp/test.dat' 8901ms COPY test.tab FROM '/tmp/test.dat' rows=80000 37409ms COPY test.tab FROM '/tmp/test.dat' 38015ms COPY test.tab FROM '/tmp/test.dat' rows=120000 90227ms COPY test.tab FROM '/tmp/test.dat' 87838ms COPY test.tab FROM '/tmp/test.dat' rows=160000 160080ms COPY test.tab FROM '/tmp/test.dat' 159801ms COPY test.tab FROM '/tmp/test.dat' rows=200000 247330ms COPY test.tab FROM '/tmp/test.dat' 251191ms COPY test.tab FROM '/tmp/test.dat' O(N^2) ????