MemSQL 性能问题

MemSQL performance issues

我安装了一个单节点 MemSQL,带有一个主聚合器和两个叶节点(都在一个盒子上)。该机器有 2 个内核,16Gb RAM,MemSQL 列存储数据约为 7Gb(来自 21Gb CSV)。当 运行 查询数据时,内存使用上限为 ~2150Mb(11Gb 空闲)。我已经将两个叶子配置为在两个节点的 memsql.cnf 文件中都有 maximum_memory = 7000(memsql-optimize 类似)。在查询执行期间,主聚合器占 100% CPU,叶子占 0-8% CPU.

这似乎不是对系统资源的有效利用,但我不确定我可以做些什么来配置系统或 MemSQL 以更有效地利用 CPU 或内存。任何帮助将不胜感激!

如果在查询执行期间您的机器处于 100% cpu(在所有内核上),那么它是哪个 MemSQL 节点并不重要,您的工作负载吞吐量仍然是 cpu 上的瓶颈.但是,对于大多数查询,您不会期望大多数 cpu 使用在聚合器上,因此您可能需要查看查询的 EXPLAIN 或 PROFILE。

列存储数据作为 OS 文件缓存的一部分缓存在内存中 - 它不算作 MemSQL 保留的内存,这就是您的内存使用量小于列存储数据大小的原因。

尽管机器上只有一个 memsql 集群,但我的数据库来自其他地方而不是当前的 memsql 安装(可能是较旧的集群配置)。查看 Web UI 中的数据库部分没有显示 databases/tables,但我的查询成功并获得了预期的答案。

drop database/reload from CSV 成功地解决了这个问题。现在在查询期间使用所有核心线程。