首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在二进制列上选择带有子字符串操作的MemSQL比Server慢

为什么在二进制列上选择带有子字符串操作的MemSQL比Server慢
EN

Stack Overflow用户
提问于 2015-07-13 17:51:22
回答 2查看 1K关注 0票数 2

我有一个表,它有两个二进制列,用来存储64个字节长的字符串和两个整数列。这个表有10+百万行,并使用2GB内存从7GB可用内存中提取出来,因此仍有足够的可用内存。我还配置了基于MemSQL的practices/

对于将二进制列与某些值进行比较的简单选择SQL,MemSQL大约比Server快3倍,因此我们可以排除配置或使用MemSQL的硬件等问题。

对于使用

  • 选择子句中的子字符串操作和
  • where子句中的子字符串和长度操作

MemSQL比Server慢10倍。这些SQL在MemSQL上的测量性能是在前几次运行后进行的,以确保不包括SQL编译持续时间。看上去,MemSQL的性能问题与它如何处理二进制列、子字符串和字符串长度操作有关。

  1. 有没有人看到过与MemSQL类似的性能问题?如果是,列类型和SQL操作是什么?
  2. 有没有人看到过MemSQL对于varchar列的子字符串和长度操作存在类似的性能问题?

谢谢。

迈克尔,

EN

回答 2

Stack Overflow用户

发布于 2015-07-14 20:20:15

我的建议是:回到行存储,但是使用VARBINARY而不是BINARY,考虑将索引放在列上或创建持久化列,然后尝试用like重写谓词。

如果您粘贴一个示例查询,我可以帮助您转换它。

相关文档位于dev.mysql.com/doc/refman/5.0/en/pattern-matching.html docs.memsql.com/4.0/概念性/计算列中。

祝好运。

票数 1
EN

Stack Overflow用户

发布于 2015-07-13 18:23:13

很难对perf问题做出一般的回答,但在您的例子中,我会尝试使用MemSQL列存储表,而不是内存行存储表。因为不管怎么说,您都在做完整的扫描,所以可以将列数据堆在一起,这样就有好处了。

http://docs.memsql.com/4.0/concepts/columnar/

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

https://stackoverflow.com/questions/31390131

复制
相关文章

相似问题

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