[rt-users] Performance-Bug in SelfService when updated from 3.6.1 to 3.6.3
Dirk Pape
pape-rt at inf.fu-berlin.de
Tue Jan 23 02:39:38 EST 2007
Hello,
I recently upgraded our test system from 3.6.1 to 3.6.3 and I observed a
performance problem in SelfService which is new. SelfService/index.html
takes more than 15 minutes to load on our server where RT.
I tracked this issue down to a change in SelfService/Elements/MyRequest.
In 3.6.1 and before SelfService only searched for Tickets of which the User
is requestor.
In 3.6.3 it searches for Tickets where user ist Requestor, AdminCc or Cc of.
This search is not well performed by my mysql db server (Ver 12.22 Distrib
4.0.24, for pc-linux-gnu (i386)) as reported by me in other tickets before.
I changed SelfService/Elements/MyRequest only to include Tickets with
requestor and the page is performing well again.
All indexes are as specified by the default installation. I tested some
additional indexes whithout any success.
Is this a known issue only applying to mysql? Only to mysql 4? Or why does
no others report this error?
Here is the query and the "explaination":
# Query_time: 805 Lock_time: 0 Rows_sent: 1 Rows_examined: 204821648
SELECT COUNT(DISTINCT main.id) FROM (((((((((Tickets main JOIN Groups
Groups_4 ON ( Groups_4.Instance = main.id)) JOIN Groups Groups_7 ON (
Groups_7.Instance = main.id)) LEFT JOIN CachedGroupMembers
CachedGroupMembers_5 ON ((CachedGroupMembers_5.GroupId !=
CachedGroupMembers_5.MemberId)) AND ( CachedGroupMembers_5.GroupId =
Groups_4.id)) JOIN Groups Groups_1 ON ( Groups_1.Instance = main.id))
LEFT JOIN CachedGroupMembers CachedGroupMembers_8 ON (
CachedGroupMembers_8.GroupId = Groups_7.id) AND (
(CachedGroupMembers_8.GroupId != CachedGroupMembers_8.MemberId))) LEFT
JOIN Users Users_6 ON ( Users_6.id = CachedGroupMembers_5.MemberId)) LEFT
JOIN Users Users_9 ON ( Users_9.id = CachedGroupMembers_8.MemberId)) LEFT
JOIN CachedGroupMembers CachedGroupMembers_2 ON (
CachedGroupMembers_2.GroupId = Groups_1.id) AND (
(CachedGroupMembers_2.GroupId != CachedGroupMembers_2.MemberId))) LEFT
JOIN Users Users_3 ON ( Users_3.id = CachedGroupMembers_2.MemberId))
WHERE ((Groups_1.Domain = 'RT::Ticket-Role')) AND ((Groups_1.Type =
'Requestor')) AND ((Groups_4.Domain = 'RT::Ticket-Role')) AND
((Groups_4.Type = 'Cc')) AND ((Groups_7.Domain = 'RT::Ticket-Role')) AND
((Groups_7.Type = 'AdminCc')) AND ((main.EffectiveId = main.id)) AND
((main.Status != 'deleted')) AND ((main.Type = 'ticket')) AND ( ( (
(Users_3.EmailAddress = '') ) OR ( (Users_6.EmailAddress = '') ) OR (
(Users_9.EmailAddress = '') ) ) AND ( (main.Status = 'open') OR
(main.Status = 'new') OR (main.Status = 'stalled') ) );
+----------------------+--------+-----------------+------------+---------+-------------------------------+-------+--------------------------+
| table | type | possible_keys | key | key_len |
ref | rows | Extra |
+----------------------+--------+-----------------+------------+---------+-------------------------------+-------+--------------------------+
| Groups_1 | ref | Groups1,Groups2 | Groups2 | 65 |
const | 51330 | Using where |
| main | eq_ref | PRIMARY | PRIMARY | 4 |
Groups_1.Instance | 1 | Using where |
| Groups_7 | ref | Groups1,Groups2 | Groups1 | 65 |
const | 72594 | Using where; Using index |
| CachedGroupMembers_8 | ref | DisGrouMem | DisGrouMem | 5 |
Groups_7.id | 1 | Using index |
| Groups_4 | ref | Groups1,Groups2 | Groups1 | 65 |
const | 72594 | Using where; Using index |
| CachedGroupMembers_5 | ref | DisGrouMem | DisGrouMem | 5 |
Groups_4.id | 1 | Using index |
| Users_6 | eq_ref | PRIMARY | PRIMARY | 4 |
CachedGroupMembers_5.MemberId | 1 | |
| Users_9 | eq_ref | PRIMARY | PRIMARY | 4 |
CachedGroupMembers_8.MemberId | 1 | |
| CachedGroupMembers_2 | ref | DisGrouMem | DisGrouMem | 5 |
Groups_1.id | 1 | Using index |
| Users_3 | eq_ref | PRIMARY | PRIMARY | 4 |
CachedGroupMembers_2.MemberId | 1 | Using where |
+----------------------+--------+-----------------+------------+---------+-------------------------------+-------+--------------------------+
10 rows in set (0.05 sec)
Regards,
Dirk.
--
Dr. Dirk Pape (eAS - Projektleitung Campus Management)
Freie Universitaet Berlin
Grunewaldstr. 34a, 12165 Berlin
Tel. +49 (0)30 838 75143, Fax. +49 (0)30 838 54654
More information about the rt-users
mailing list