I'm having random query slowness that i can only reproduce once. My main
question is that the query runs faster the second time around but i dont
have query cache enabled here is some info from mysql profiler;
The time is spent mostly on the sending data step
first time around
63 rows in set (0.51 sec)
show profile all;
+--------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+
| Status | Duration | CPU_user | CPU_system | Context_voluntary
| Context_involuntary | Block_ops_in | Block_ops_out | Messages_sent |
Messages_received | Page_faults_major | Page_faults_minor | Swaps |
Source_function | Source_file | Source_line |
+--------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+
| starting | 0.000165 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
NULL | NULL | NULL |
| Opening tables | 0.000033 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
open_tables | sql_base.cc | 4450 |
| System lock | 0.000020 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_lock_tables | lock.cc | 258 |
| Table lock | 0.000028 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_lock_tables | lock.cc | 269 |
| init | 0.000052 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_select | sql_select.cc | 2337 |
| optimizing | 0.000036 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
optimize | sql_select.cc | 762 |
| statistics | 0.000233 | 0.001000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
optimize | sql_select.cc | 944 |
| preparing | 0.000031 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
optimize | sql_select.cc | 954 |
| executing | 0.000017 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
exec | sql_select.cc | 1638 |
| Sending data | 0.504797 | 0.129980 | 0.012998 | 429
| 38 | 2456 | 64 | 0
| 0 | 0 | 0 | 0 |
exec | sql_select.cc | 2177 |
| end | 0.000054 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_select | sql_select.cc | 2382 |
| query end | 0.000023 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_execute_command | sql_parse.cc | 4799 |
| freeing items | 0.000063 | 0.000000 | 0.000999 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_parse | sql_parse.cc | 5805 |
| logging slow query | 0.000018 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
log_slow_statement | sql_parse.cc | 1608 |
| cleaning up | 0.000020 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
dispatch_command | sql_parse.cc | 1575 |
+--------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+
15 rows in set (0.00 sec)
Second time around
63 rows in set (0.00 sec)
mysql> show profile
all;+--------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+|
Status | Duration | CPU_user | CPU_system | Context_voluntary |
Context_involuntary | Block_ops_in | Block_ops_out | Messages_sent |
Messages_received | Page_faults_major | Page_faults_minor | Swaps |
Source_function | Source_file | Source_line |
+--------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+
| starting | 0.000142 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
NULL | NULL | NULL |
| Opening tables | 0.000028 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
open_tables | sql_base.cc | 4450 |
| System lock | 0.000023 | 0.000000 | 0.001000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_lock_tables | lock.cc | 258 |
| Table lock | 0.000030 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_lock_tables | lock.cc | 269 |
| init | 0.000040 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_select | sql_select.cc | 2337 |
| optimizing | 0.000030 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
optimize | sql_select.cc | 762 |
| statistics | 0.000217 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
optimize | sql_select.cc | 944 |
| preparing | 0.000029 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
optimize | sql_select.cc | 954 |
| executing | 0.000018 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
exec | sql_select.cc | 1638 |
| Sending data | 0.000936 | 0.000999 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
exec | sql_select.cc | 2177 |
| end | 0.000026 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_select | sql_select.cc | 2382 |
| query end | 0.000020 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_execute_command | sql_parse.cc | 4799 |
| freeing items | 0.000046 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
mysql_parse | sql_parse.cc | 5805 |
| logging slow query | 0.000018 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
log_slow_statement | sql_parse.cc | 1608 |
| cleaning up | 0.000019 | 0.000000 | 0.000000 | 0
| 0 | 0 | 0 | 0
| 0 | 0 | 0 | 0 |
dispatch_command | sql_parse.cc | 1575 |
+--------------------+----------+----------+------------+-------------------+---------------------+--------------+---------------+---------------+-------------------+-------------------+-------------------+-------+-----------------------+---------------+-------------+
15 rows in set (0.00 sec)
Any ideas how i can improve the performance of the query. the explain
explain select user_id,result_id from score where quiz_id='495536' and
user_id in
(594939703,641833475,648583496,663932271,791002140,844089643,1014189359,1014996058,1021011357,1035297313,1043753292,1103136802,1107070131,1114628916,1129457032,1133091309,1188705251,1211995704,1219452575,1219631303,1239604246,1241474238,1266412488,1266549868,1288719892,1289732597,1317205736,1346089661,1350738033,1354967647,1356046070,1369391720,1374076904,1406156780,1407302487,1414151928,1425275210,1457839666,1466635900,1484315366,1493410149,1536834812,1544094394,1572354290,1575139632,1578136049,1587129534,1592996678,1594617334,1615538051,1615906710,1621733854,1622940529,1646693120,1674002418,1684166314,1684535294,1701864533,1703227082,1711823847,1713353427,1732903860,1752595138,1758240924,1813245914,1815724221,1839942291,100000015406640);
+----+-------------+-------+-------+-----------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len |
ref | rows | Extra |
+----+-------------+-------+-------+-----------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | score | range | user_id,quiz_id | user_id | 12 |
NULL | 68 | Using where |
+----+-------------+-------+-------+-----------------+---------+---------+------+------+-------------+
1 row in set (0.02 sec)
UNIQUE KEY `user_id` (`user_id`,`quiz_id`),