Bug #69350 performance regression between 5.5 and 5.6 for simple statement in routine loop
| Submitted: | 30 May 2013 5:44 | ||
|---|---|---|---|
| Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
| Status: | In progress | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S5 (Performance) |
| Version: | 5.6 | OS: | Any |
| Assigned to: | CPU Architecture: | Any |
[30 May 2013 6:07]
Shane Bester
server was run with options: --no-defaults --skip-grant-tables --skip-name-resolve --console \ --loose-performance-schema=0 --skip-symbolic-links --query-cache-size=0 \ --query-cache-type=0
[30 May 2013 8:41]
Shane Bester
hard to compare when code is in different functions in different versions.
Attachment: profile_comparison.csv (application/octet-stream, text), 47.72 KiB.
[28 May 1:12]
MySQL Admin
Posted by developer: Bug status updated to 'In progress'
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.054 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: The testcase shows a sharp performance degradation between 5.5 and 5.6. 5.7 improves a bit, but I feel there is some further investigation needed here. Version, call1, call2, call3, call4, call5 ---------------------------------------------- 5.7.2, 33.20, 33.25, 33.25, 33.29, 33.22 5.6.13, 36.83, 36.46, 36.62, 36.50, 36.42 5.5.33, 25.73, 25.22, 25.32, 25.35, 25.38 5.1.71, 24.37, 24.31, 24.13, 24.29, 24.28 5.0.96, 28.86, 28.87, 28.94, 28.70, 28.88 How to repeat: set names latin1; drop procedure if exists `p1`; delimiter $ create procedure `p1`(`n` bigint unsigned) begin declare `i` bigint unsigned default 0; declare `j` bigint unsigned default 0; repeat select 1 into `j`; set `i`:=`i`+1; until `i`>=`n` end repeat; end $ delimiter ; call `p1`(10000000); call `p1`(10000000); call `p1`(10000000); call `p1`(10000000); call `p1`(10000000); select version(); Suggested fix: Will upload the callgrind files.