[rt-users] Oracle 9 and Build.html performance
Ruslan Zakirov
ruz at bestpractical.com
Fri Mar 7 07:49:17 EST 2008
On Wed, Feb 27, 2008 at 6:41 PM, Emmanuel Lacour
<elacour at easter-eggs.com> wrote:
> On Wed, Feb 27, 2008 at 04:41:55PM +0300, Ruslan Zakirov wrote:
> >
> > Privet.
> >
>
> I will be near request-tracker.ru on saturday, flying to Tomck :)
Missed this note last time :) but anyway Moscow is to far from Tomsk
and I have feeling that it's farther than France :)
> > Oracle doesn't want to build plan I want it to build :(. I still
> > believe it should use different way. I hope you'll help me by
> > providing more explains and may be we'll make this query really fast
> > as it should be or learn some lessons to remember in the future.
> >
> > The following query use a hint to predefine order of joins, I want you
> > to explain it, so I can compare plans with those we have now.
> >
> > SELECT main.* FROM (
> > SELECT /* ORDERED */ DISTINCT main.ID
> > FROM acl acl_4, GROUPS groups_3, cachedgroupmembers
> > cachedgroupmembers_2, principals principals_1, users main
> > WHERE
> > acl_4.rightname = 'OwnTicket'
> > AND (acl_4.objecttype = 'RT::Queue' OR acl_4.objecttype = 'RT::System')
> > AND acl_4.principaltype = groups_3.TYPE
> > AND (groups_3.domain = 'RT::Queue-Role' OR groups_3.domain =
> > 'RT::System-Role')
> > AND groups_3.ID = cachedgroupmembers_2.groupid
> > AND cachedgroupmembers_2.memberid = principals_1.ID
> > AND principals_1.ID != '1'
> > AND principals_1.disabled = '0'
> > AND principals_1.principaltype = 'User'
> > AND principals_1.ID = main.ID
> > ) distinctquery, users main
> > WHERE (main.ID = distinctquery.ID)
> > ORDER BY main.NAME ASC
Emanuel, what about the above query with optimizer hint?
> 2) we clearly need index on Principals, si plan with the folowing index:
>
>
> CREATE INDEX FSHPRINCIPALS1 ON PRINCIPALS (DISABLED);
As this index helps you I'm pretty sure the following will be better:
CREATE INDEX FSHPRINCIPALS2 ON PRINCIPALS (PRINCIPALTYPE, DISABLED);
>
> 5) plan with CGM_FINAL instead of TEST1/TEST2
I'm going to add this index into RT in 3.8 for Oracle and mysql, not
sure about Pg and other DBs.
> > > CREATE INDEX FSHACL1 ON ACL (OBJECTID);
> > > CREATE INDEX FSHCGM1 ON CACHEDGROUPMEMBERS (DISABLED, MEMBERID);
> > > CREATE INDEX FSHGROUPMEMBERS1 ON GROUPMEMBERS (MEMBERID);
> > > CREATE INDEX FSHGROUPS1 ON GROUPS (INSTANCE);
> > > CREATE INDEX FSHPRINCIPALS1 ON PRINCIPALS (DISABLED);
> > > CREATE INDEX FSHTICKETS1 ON TICKETS (STATUS);
> > >
> >
>
> > The most important thing I want to see explain with TEST2, we need
> > confirmation that oracle successfully switches from TEST1 to TEST2 and
> > benefits from it.
>
> That's ok.
Thank you for valuable feedback.
>
>
> >
> > Second goal is too confirm that CGM_FINAL will not make things much
> > worse when there is no FSHCGM1, TEST1 and TEST2.
>
> Also ok.
>
>
> But still no perf improvement :(
Not sure what to do. May be we should try to explain the query on
oracle 10 with similar amount of data.
--
Best regards, Ruslan.
More information about the rt-users
mailing list