【问题标题】:Mysql slow with multiple queries at same timeMysql同时进行多个查询很慢
【发布时间】:2018-05-20 22:28:06
【问题描述】:

我有一个大型 mysql 表(100 万行),如果我的用户同时点击它,它将在大约同一时间进行大量查询(比如 5 秒内 300 个查询),它会将我的网站带到暂停(执行所有查询大约需要 22 秒)。

这正常吗,我该怎么办?

我尝试使用较小的桌子,它工作正常,但在较大的桌子上它很残酷。

有什么想法吗?

我在 php 和 node 上都试过了,但不是这样,它是我的数据库。 谢谢

这就是桌子上的解释: 当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用。 字段类型 Null Key 默认 Extra id int(11) NO PRI NULL auto_increment game_id int(11) NO NULL
user_id int(11) NO NULL
question_id varchar(10) 否
回答文本 YES NULL
distanceAway int(11) 是 NULL
点 int(11) 是 NULL
questionNum int(11) NO NULL
纬度浮动 YES NULL
longg float YES NULL
颜色 varchar(6) NO NULL
submitTime 时间戳 NO CURRENT_TIMESTAMP
平均浮动 NO NULL

【问题讨论】:

  • 数据库索引是否正确?还取决于您的查询方式。
  • stackoverflow.com/questions/46853339/… 和你之前的帖子有关系吗?
  • 您考虑过使用查询级缓存吗?请参考dev.mysql.com/doc/refman/5.7/en/query-cache.html
  • 你能告诉我们查询吗?从文章中选择 * 当然是致命的
  • 没有更多信息,没有太多具体的建议可以提供。但是,如果调整查询是一门艺术,那么有一些工具可以帮助您。 EXPLAIN 可以帮助您识别可以改进的地方索引。 Optimizing SELECT 有足够的信息让你头脑发热,但你的答案就在里面。

标签: php mysql node.js


【解决方案1】:

添加一个 PK 列并索引所有在查询中传递参数的列。具有唯一或正常的索引(如适用)。

【讨论】:

  • Durgesh,非常感谢,它做到了(大多数情况下,仍然没有我想要的那么快,但快了 90%),太棒了。我有一个主键,我没有意识到索引其他列的重要性。谢谢!
猜你喜欢
  • 2013-08-14
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多