MySQL查询导致最大连接

时间:2012-11-06 00:29:25

标签: mysql optimization indexing

我每30秒对MySQL数据库运行以下查询:

SELECT message.id FROM message WHERE userto='13689' AND tstampviewed IS NULL AND message.status != 'VOID';

它在我的慢速查询日志中出现了很多,但在我看来,它是尽可能优化的。

EXPLAIN的结果:

SELECT_TYPE =简单

TABLE =消息

TYPE = ref

POSSIBLE_KEYS = userto,tst,stat

KEY = userto

KEY_LEN = 53

REF = const

ROWS = 1

EXTRA =“使用位置”

密钥userto,tst和stat都是正常的BTREE索引,对于查询的whereclause中引用的每个varchar字段都有一个索引。它是一个有300K行的MyISAM表。用户确实一致地写入表,但读取的可能性更大(读取与写入的比率为10/1)。数据库服务器是Windows 2008 Enterprise,具有大量CPU和快速驱动器。

在过去的一个月里,我们不断收到max_connection错误,即使我将max_connections从750增加到1500.一天几次,似乎查询挂起(我无法验证这个,因为我没有访问权限)实时进入进程列表),1500个查询在其后面堆积并最大化连接。这显然会导致很多其他问题。

上面的查询是在慢查询日志中出现的问题,尽管我认为它尽可能地优化了。任何人都可以告诉我,或者指出我正确的方向来解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题不在于查询 - 您正在打开与数据库的连接而不是关闭它,而是每次都打开一个新连接。