首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MemSQL中选择*

在MemSQL中选择*
EN

Stack Overflow用户
提问于 2016-11-13 19:06:29
回答 2查看 340关注 0票数 0

我正在玩MemSQL,它看起来真的很快。但当我执行SELECT * FROM [some big table]时,通常需要很长时间。我可以在MemSQL Opt中看到大量的流量,几乎没有cpu/内存的使用。我已经将我的sql编辑器(DataGrip)设置为仅获取500行,但它没有帮助(我知道我可以使用limit命令)。

我的问题是这是怎么回事?有没有办法监控这件事?

EN

回答 2

Stack Overflow用户

发布于 2016-11-15 01:41:25

所发生的情况非常依赖于情况,但是您可以使用EXPLAIN SELECT * FROM [some big table],这应该可以从广义上告诉您查询正在做什么,从而可以指示查询执行中的哪个步骤花费了很长时间

如果它不打算将所有结果流式传输到客户端,则客户端正在为您添加限制。您可以使用show plancache并查看是否存在SELECT * FROM [some big table] LIMIT 500,以查看您的客户端是否自动添加它。如果它在有限制的情况下运行查询,它应该会更快,但如果它只是截断你那一端的结果,我不会感到惊讶-这根本不会提高速度。

如果您监视cpu、内存、磁盘I/O和网络,那么您就基本上涵盖了所有内容。除非你使用的是列存储,否则你根本不应该使用磁盘,所以要么是错误,要么是网络瓶颈。最有可能的罪魁祸首是粗糙的分布式连接,这可能会非常慢-特别是在旧版本中。

票数 0
EN

Stack Overflow用户

发布于 2016-11-19 10:11:53

当您执行这样的查询时,聚集器需要从叶子中获取所有行,并将它们流式传输到客户端。聚合器在客户端读取行之前获取行,因此它将通过网络传输超过500行的行,直到它填满它的缓冲区。使用LIMIT是读取有限行数的正确方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40573121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档