[rt-users] Oracle 9 and Build.html performance

Emmanuel Lacour elacour at easter-eggs.com
Mon Jan 21 09:40:45 EST 2008


Hi everybody,

I'm looking for help or hints on this problem. RT 3.6.5 do the following
request when hitting the search page (Build.html, empty, just the query
builder) and take 20 seconds to get an empty result from Oracle :(

SELECT main.* FROM ( SELECT DISTINCT main.id FROM Users main CROSS JOIN
ACL ACL_4 JOIN Principals Principals_1 ON ( Principals_1.id = main.id )
JOIN CachedGroupMembers CachedGroupMembers_2 ON (
CachedGroupMembers_2.MemberId = Principals_1.id ) JOIN Groups Groups_3
ON ( Groups_3.id = CachedGroupMembers_2.GroupId ) WHERE
(Principals_1.Disabled = '0') AND (ACL_4.PrincipalType = Groups_3.Type)
AND (Principals_1.id != '1') AND (Principals_1.PrincipalType = 'User')
AND (ACL_4.RightName = 'OwnTicket') AND ((ACL_4.ObjectType =
'RT::Queue') OR (ACL_4.ObjectType = 'RT::System')) AND ((Groups_3.Domain
= 'RT::Queue-Role') OR (Groups_3.Domain = 'RT::System-Role')) )
distinctquery, Users main WHERE ( main.id = distinctquery.id) ORDER BY
main.Name ASC;


It's a stock RT oracle schema with the followings custom indexes (needed
for other performances problem):

- FSHACL1 on column OBJECTID, table: ACL,
- FSHCGM1 on columns DISABLED,MEMBERID, table: CACHEDGROUPMEMBERS,
- FSHGROUPMEMBERS1 on column MEMBERID, table: GROUPMEMBERS,
- FSHGROUPS1 on column INSTANCE, table: GROUPS,
- FSHPRINCIPALS1 on column DISABLED, table: PRINCIPALS,
- FSHTICKETS1 on column STATUS, table: TICKETS.

optimizer_mode is "choose"
optimizer_index_caching is 50
optimizer_index_cost_adj is 1


I did an explain with the following result:

Execution Plan
----------------------------------------------------------
   0	  SELECT STATEMENT Optimizer=CHOOSE (Cost=11446 Card=1 Bytes=2
	  54)

   1	0   SORT (ORDER BY) (Cost=11446 Card=1 Bytes=254)
   2	1     NESTED LOOPS (Cost=11444 Card=1 Bytes=254)
   3	2	VIEW (Cost=11443 Card=1 Bytes=10)
   4	3	  SORT (UNIQUE) (Cost=11443 Card=1 Bytes=77)
   5	4	    NESTED LOOPS (Cost=1231 Card=1170677 Bytes=9014212
	  9)

   6	5	      HASH JOIN (Cost=1230 Card=20646030161 Bytes=1424
	  576081109)

   7	6		TABLE ACCESS (FULL) OF 'GROUPS' (Cost=195 Card
	  =227456 Bytes=5686400)

   8	6		NESTED LOOPS (Cost=205 Card=453847 Bytes=19969
	  268)

   9	8		  MERGE JOIN (CARTESIAN) (Cost=204 Card=209510
	  2 Bytes=83804080)

  10	9		    INLIST ITERATOR
  11   10		      INDEX (RANGE SCAN) OF 'ACL1' (NON-UNIQUE
	  ) (Cost=1 Card=23 Bytes=667)

  12	9		    BUFFER (SORT) (Cost=203 Card=90683 Bytes=9
	  97513)

  13   12		      TABLE ACCESS (BY INDEX ROWID) OF 'PRINCI
	  PALS' (Cost=9 Card=90683 Bytes=997513)

  14   13			INDEX (RANGE SCAN) OF 'FSHPRINCIPALS1'
	   (NON-UNIQUE)

  15	8		  INDEX (UNIQUE SCAN) OF 'USERS_KEY' (UNIQUE)
  16	5	      INDEX (RANGE SCAN) OF 'GROUMEM' (NON-UNIQUE)
  17	2	TABLE ACCESS (BY INDEX ROWID) OF 'USERS' (Cost=1 Card=
	  1 Bytes=244)

  18   17	  INDEX (UNIQUE SCAN) OF 'USERS_KEY' (UNIQUE)




Statistics
----------------------------------------------------------
	237  recursive calls
	  0  db block gets
    2699081  consistent gets
	  0  physical reads
	  0  redo size
       1249  bytes sent via SQL*Net to client
	275  bytes received via SQL*Net from client
	  2  SQL*Net roundtrips to/from client
	  9  sorts (memory)
	  0  sorts (disk)
	  0  rows processed



Thanks for any help :)


-- 
Emmanuel Lacour



More information about the rt-users mailing list