mysql查询缓存加锁_MySQL慢查询 – “等待查询缓存锁”

  • Post author:
  • Post category:mysql

我在与运行5.5的服务器相同的机器上的简单表上运行一个简单的查询。从2000万行表中返回约7000行,需要22秒。在分析时大部分时间都被多个“等待查询缓存锁定”占用。什么是“等待查询缓存锁定”,为什么这个查询需要这么长时间?这是我用设置服务器的方式吗?

这是配置文件(注意操作的实际时间实际上是如下所示的here):

mysql> show profile for query 4;

+——————————–+———-+

| Status | Duration |

+——————————–+———-+

| starting | 0.000015 |

| Waiting for query cache lock | 0.000003 |

| checking query cache for query | 0.000045 |

| checking permissions | 0.000006 |

| Opening tables | 0.000027 |

| System lock | 0.000007 |

| Waiting for query cache lock | 0.000032 |

| init | 0.000018 |

| optimizing | 0.000008 |

| statistics | 0.033109 |

| preparing | 0.000019 |

| executing | 0.000002 |

| Sending data | 4.575480 |

| Waiting for query cache lock | 0.000005 |

| Sending data | 5.527728 |

| Waiting for query cache lock | 0.000005 |

| Sending data | 5.743041 |

| Waiting for query cache lock | 0.000004 |

| Sending data | 6.191706 |

| end | 0.000007 |

| query end | 0.000005 |

| closing tables | 0.000028 |

| freeing items | 0.000008 |

| Waiting for query cache lock | 0.000002 |

| freeing items | 0.000182 |

| Waiting for query cache lock | 0.000002 |

| freeing items | 0.000002 |

| storing result in query cache | 0.000004 |

| logging slow query | 0.000001 |

| logging slow query | 0.000002 |

| cleaning up | 0.000003 |

+——————————–+———-+

这是表:

mysql> SHOW CREATE TABLE prvol;

“Table”,”Create Table”

“prvol”,”CREATE TABLE `prvol` (

`ticker` varchar(10) DEFAULT NULL,

`date` date DEFAULT NULL,

`close` float unsigned DEFAULT NULL,

KEY `Index 1` (`date`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1″

这是查询:

mysql> select close from prvol where date = ‘20100203’;

编辑:运行SQL_NO_CACHE后,所有的时间现在都在执行。在2.4GHz,3GB RAM机器上,这个尺寸的表可能是正常的吗?

+———————-+———–+

| Status | Duration |

+———————-+———–+

| starting | 0.000052 |

| checking permissions | 0.000007 |

| Opening tables | 0.000027 |

| System lock | 0.000008 |

| init | 0.000019 |

| optimizing | 0.000008 |

| statistics | 0.034766 |

| preparing | 0.000011 |

| executing | 0.000002 |

| Sending data | 22.071324 |

| end | 0.000012 |

| query end | 0.000005 |

| closing tables | 0.000020 |

| freeing items | 0.000170 |

| logging slow query | 0.000001 |

| logging slow query | 0.000003 |

| cleaning up | 0.000004 |

+———————-+———–+

编辑:包含解释的结果。

mysql> explain extended select cp from prvol where date = ‘20100208’;

+—-+————-+——-+——+—————+———+———+——-+——+———-+————-+

| id | select_type | table | type | possible_keys | key | key_len | ref |rows | filtered | Extra |

+—-+————-+——-+——+—————+———+———+——-+——+———-+————-+

| 1 | SIMPLE | prvol | ref | Index 1 | Index 1 | 4 | const |6868 | 100.00 | Using where |

+—-+————-+——-+——+—————+———+———+——-+——+———-+————-+

1 row in set, 1 warning (0.08 sec)


版权声明:本文为weixin_39992831原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。