I did some bulk load testing with triggers on v8.1.7.4 a few months ago.
All the trigger(s) had for code was a "NULL;" statement. The first trigger
increased the time 100% in the insert (ie: a load that took 1 minute
increased to 2 minutes with the trigger). Each additional trigger after
the first cost an additional 25%.
So I would read that as a 75% cost/increase to do the SQL to PLSQL switch.
[EMAIL PROTECTED]
.com To: Multiple recipients of list
ORACLE-L <[EMAIL PROTECTED]>
Sent by: cc:
[EMAIL PROTECTED] Subject: Re: Do triggers cause a
context switch between SQL & PL/SQL
04/01/03 12:43 PM
Please respond to
ORACLE-L
I thought as much, from what I've heard and read. Does anyone know if
there's a way to figure out how much overhead the switches generate? I'm
guessing they would show up in trace files in the 'other CPU' category.
[EMAIL PROTECTED]
T
Sent by: To: Multiple
recipients of list ORACLE-L
[EMAIL PROTECTED] <[EMAIL PROTECTED]>
cc:
bcc:
04/01/03 01:19 PM Subject:
Re: Do
Please respond to triggers cause a context
switch between SQL & PL/SQL
ORACLE-L
Since you the action switches from SQL to PL/SQL to enforce the trigger,
it sounds like a context switch to me.
FYI: This can be improved somewhat by adding "and rownum < 2 " into the
WHERE clauses of these. There will be noticable improvement when there
are many child rows.
Jared
[EMAIL PROTECTED]
Sent by: [EMAIL PROTECTED]
04/01/2003 09:48 AM
Please respond to ORACLE-L
To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
cc:
Subject: Do triggers cause a context switch between SQL &
PL/SQL
Question:
If some idiot decides to circumvent Oracle's referential integrity and
re-implement it by using triggers (insert, update, delete) that checks the
foreign (parent/child) key fields in other tables like this,
declare numrows INTEGER;
begin
-- ApplicationForm is used if the state and other criteria match that
in
-- ApplicationFormCriteria ON PARENT DELETE RESTRICT
select count(*) into numrows
from ApplicationFormCriteria
where
ApplicationFormCriteria.applicationFormId =
:old.applicationFormId;
if (numrows > 0)
then
raise_application_error(
-20343,
'Database Integrity Violation - Cannot DELETE row in Table
''ApplicationForm'' because referencing row exists in table
''ApplicationFormCriteria'' for Primary Key (applicationFormId)=' ||
:old.applicationFormId
);
end if;
end;
would it cause context switching between the SQL & PL/SQL engines?
Yes, some genius did this in one of our databases. Two hundred
third/fourth normal form tables enforced by 800 triggers... I have him
registered to be stoned in public.
--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author:
INET: [EMAIL PROTECTED]
Fat City Network Services -- 858-538-5051 http://www.fatcity.com
San Diego, California -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).
--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author:
INET: [EMAIL PROTECTED]
Fat City Network Services -- 858-538-5051 http://www.fatcity.com
San Diego, California -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).
--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author:
INET: [EMAIL PROTECTED]
Fat City Network Services -- 858-538-5051 http://www.fatcity.com
San Diego, California -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).
--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author:
INET: [EMAIL PROTECTED]
Fat City Network Services -- 858-538-5051 http://www.fatcity.com
San Diego, California -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).