First of all, a little background. We have a table which is used as a trigger table for
entering and processing data for a network monitoring system. Essentially, we insert a set of columns into a table, and
each row fires a trigger function which calls a very large stored procedure
which aggregates data, etc. At that point, the row is deleted from the
temp table. Currently, records are transferred from the data collector
as a series of multi-row inserts. Before going through the exercise of recoding, and given the
fact that each of this inserts fires of a trigger, will I see any noticeable
performance? The table definition follows: CREATE TABLE tbltmptests ( tmptestsysid bigserial NOT NULL, testhash character varying(32), testtime timestamp with time zone, statusid integer, replytxt text, replyval real, groupid integer, CONSTRAINT tbltmptests_pkey PRIMARY KEY
(tmptestsysid) ) WITH ( OIDS=FALSE ); ALTER TABLE tbltmptests OWNER TO postgres; -- Trigger: tbltmptests_tr on tbltmptests -- DROP TRIGGER tbltmptests_tr ON tbltmptests; CREATE TRIGGER tbltmptests_tr AFTER INSERT ON tbltmptests FOR EACH ROW EXECUTE PROCEDURE fn_testtrigger(); Another question – is there anything special we need
to do to handle the primary constraint field? Now, on a related note and looking forward to the streaming
replication of v9, will this work with it, since we have multiple tables being
update by a trigger function? |