[rt-users] any page showing a user drop down in a ticket is loading slow
Kevin Falcone
falcone at bestpractical.com
Wed Dec 18 13:07:40 EST 2013
On Wed, Dec 18, 2013 at 12:29:05PM -0500, Adam Hobaugh wrote:
> >The slow query logs are most helpful when you then run EXPLAIN on the
> >query so you know why the database is having trouble.
> Here is the EXPLAIN for the two queries.
>
> mysql> EXPLAIN SELECT DISTINCT main.* FROM Users main CROSS JOIN ACL
> ACL_3 JOIN Principals Principals_1 ON ( Principals_1.id = main.id )
> JOIN CachedGroupMembers CachedGroupMembers_2 ON (
> CachedGroupMembers_2.MemberId = Principals_1.id ) JOIN
> CachedGroupMembers CachedGroupMembers_4 ON (
> CachedGroupMembers_4.MemberId = Principals_1.id ) WHERE
> ((ACL_3.ObjectType = 'RT::Queue' AND ACL_3.ObjectId = 3) OR
> (ACL_3.ObjectType = 'RT::System') OR (ACL_3.ObjectType = 'RT::Queue'
> AND ACL_3.ObjectId = 3) OR (ACL_3.ObjectType = 'RT::System')) AND
> (ACL_3.PrincipalId = CachedGroupMembers_4.GroupId) AND
> (ACL_3.PrincipalType = 'Group') AND (ACL_3.RightName = 'OwnTicket'
> OR ACL_3.RightName = 'SuperUser') AND (CachedGroupMembers_2.Disabled
> = '0') AND (CachedGroupMembers_2.GroupId = '4') AND
> (CachedGroupMembers_4.Disabled = '0') AND (Principals_1.Disabled =
> '0') AND (Principals_1.PrincipalType = 'User') AND (Principals_1.id
> != '1') ORDER BY main.Name ASC;
> +----+-------------+----------------------+--------+----------------------------------------------------+---------------------+---------+---------------------------------------+------+-----------------------------------------------------------+
> | id | select_type | table | type | possible_keys
> | key | key_len | ref
> | rows | Extra |
> +----+-------------+----------------------+--------+----------------------------------------------------+---------------------+---------+---------------------------------------+------+-----------------------------------------------------------+
> | 1 | SIMPLE | CachedGroupMembers_2 | range |
> DisGrouMem,CachedGroupMembers3,cachedgroupmembers1 | DisGrouMem
> | 10 | NULL | 264 | Using
> where; Using index; Using temporary; Using filesort |
> | 1 | SIMPLE | main | eq_ref | PRIMARY
> | PRIMARY | 4 |
> rt4_2_1.CachedGroupMembers_2.MemberId | 1 |
> |
> | 1 | SIMPLE | Principals_1 | eq_ref | PRIMARY
> | PRIMARY | 4 | rt4_2_1.main.id
> | 1 | Using where; Distinct |
> | 1 | SIMPLE | CachedGroupMembers_4 | ref |
> DisGrouMem,CachedGroupMembers3,cachedgroupmembers1 |
> CachedGroupMembers3 | 5 |
> rt4_2_1.CachedGroupMembers_2.MemberId | 1 | Using where; Distinct
> |
> | 1 | SIMPLE | ACL_3 | range | ACL1
> | ACL1 | 85 | NULL
> | 13 | Using where; Using index; Distinct |
> +----+-------------+----------------------+--------+----------------------------------------------------+---------------------+---------+---------------------------------------+------+-----------------------------------------------------------+
> 5 rows in set (0.01 sec)
Your query here says that MySQL is looking at a pretty tiny dataset
and running the same query on multiple databases here shows a wildly
different explain and very quick results. This usually points to you
having some enormous tables (although the explain doesn't indicate
that) or a badly tuned mysql.
Can you download and run http://mysqltuner.pl on your database.
It would also be interesting to see
SELECT TABLE_ROWS, TABLE_NAME
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'rt4';
changing your database name where needed.
-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 235 bytes
Desc: not available
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20131218/1571efee/attachment.sig>
More information about the rt-users
mailing list