Hi all,
I have recently upgrade a production server to 5.0.2 from 4.2.x
I have moved from mysql to MariaDB.
Whenever I do a search and I sort by any fields the results is pretty snappy, the only exception is the requestor field. Now instead of the usual 1-3 seconds I wait 15-30 seconds.
I think this may be a bug in RT query.
I compared old and new DB queries and what I was able to gather:
OLD system
show full processlist on mysql during the requestor field sort shows :
SELECT main.* FROM Tickets main JOIN Groups Groups_1 ON ( Groups_1.Domain = âRT::Ticket-Roleâ ) AND ( Groups_1.Name = âRequestorâ ) AND ( Groups_1.Instance = main.id ) LEFT JOIN CachedGroupMembers CachedGroupMembers_2 ON ( CachedGroupMembers_2.Disabled = â0â ) AND ( CachedGroupMembers_2.GroupId != CachedGroupMembers_2.MemberId ) AND ( CachedGroupMembers_2.GroupId = Groups_1.id ) LEFT JOIN Users Users_3 ON ( Users_3.id = CachedGroupMembers_2.MemberId ) WHERE (main.IsMerged IS NULL) AND (main.Status != âdeletedâ) AND (main.Type = âticketâ) AND (main.Queue = â108â AND ( main.Status = ânewâ OR main.Status = âopenâ OR main.Status = âreviewâ OR main.Status = âstalledâ OR main.Status = âcrpâ ) ) GROUP BY main.id ORDER BY MIN(Users_3.EmailAddress) ASC LIMIT 50
NEW system
show full processlist on mariaDB during the requestor field sort shows :
SELECT main.* FROM Tickets main LEFT JOIN Groups Groups_2 ON ( Groups_2.Domain = âRT::Ticket-Roleâ ) AND ( Groups_2.Name = âRequestorâ ) AND ( Groups_2.Instance = main.id ) JOIN Queues Queues_1 ON ( Queues_1.id = main.Queue ) LEFT JOIN CachedGroupMembers CachedGroupMembers_3 ON ( CachedGroupMembers_3.Disabled = â0â ) AND ( CachedGroupMembers_3.GroupId != CachedGroupMembers_3.MemberId ) AND ( CachedGroupMembers_3.GroupId = Groups_2.id ) LEFT JOIN Groups Groups_4 ON ( Groups_4.id = CachedGroupMembers_3.MemberId ) LEFT JOIN Users Users_5 ON ( Users_5.id = CachedGroupMembers_3.MemberId ) WHERE (Groups_4.id IS NULL) AND (main.IsMerged IS NULL) AND (main.Status != âdeletedâ) AND (main.Type = âticketâ) AND (main.Queue = â124â AND ( ( Queues_1.Lifecycle = âdefaultâ AND main.Status IN (âcrpâ, ânewâ, âopenâ, âreviewâ, âstalledâ) ) OR ( Queues_1.Lifecycle = âapprovalsâ AND main.Status IN (ânewâ, âopenâ, âstalledâ) ) ) ) GROUP BY main.id ORDER BY MAX(Users_5.Name) DESC LIMIT 50
That first join is prob the culprit:
FROM Tickets main JOIN Groups Groups_1
vs
FROM Tickets main LEFT JOIN Groups Groups_2
LEFT JOIN will return a bucket load more results and I canât see why youâd have it, either.
Maybe someone knows more about this issue and has any recommendation ?
/regards
Filip