我有一个表,它有两个二进制列,用来存储64个字节长的字符串和两个整数列。这个表有10+百万行,并使用2GB内存从7GB可用内存中提取出来,因此仍有足够的可用内存。我还配置了基于MemSQL的practices/。
对于将二进制列与某些值进行比较的简单选择SQL,MemSQL大约比Server快3倍,因此我们可以排除配置或使用MemSQL的硬件等问题。
对于使用
MemSQL比Server慢10倍。这些SQL在MemSQL上的测量性能是在前几次运行后进行的,以确保不包括SQL编译持续时间。看上去,MemSQL的性能问题与它如何处理二进制列、子字符串和字符串长度操作有关。
谢谢。
迈克尔,
发布于 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/概念性/计算列中。
祝好运。
发布于 2015-07-13 18:23:13
很难对perf问题做出一般的回答,但在您的例子中,我会尝试使用MemSQL列存储表,而不是内存行存储表。因为不管怎么说,您都在做完整的扫描,所以可以将列数据堆在一起,这样就有好处了。
http://docs.memsql.com/4.0/concepts/columnar/
https://stackoverflow.com/questions/31390131
复制相似问题