【问题标题】:MemSQL server takes large disk spaceMemSQL 服务器占用大量磁盘空间
【发布时间】:2016-06-22 06:34:40
【问题描述】:

我有一个 MemSQL 服务器,它的所有表中都有大约 1 MB 的数据。它还使用非常低的可接受内存使用量。但问题是服务器最近磁盘空间不足。 当查看更多详细信息时,我可以找到以下磁盘空间使用情况。

52G     /var/lib/memsql/master-3306/plancache/
34G     /var/lib/memsql/leaf-3307/plancache/

其中包含许多文件,如下所示

Select_digin_componentheader_72f4f4454iusudf9sdf98tkjnm432436thss4dgfdhjfd45tr44.cc Select_digin_componentheader_72f4f4454iusudf9sdf98tkjnm432436thss4dgfdhjfd45tr44.ok Select_digin_componentheader_72f4f4454iusudf9sdf98tkjnm432436thss4dgfdhjfd45tr44.so

digin_componentheader 是我们的表名之一,上面的文件也存在于其他表中。我们做了很多插入,但我们也会在 5 分钟后删除它们,这是我们 6 个月以来所做的唯一操作。

我们没有更改任何配置,它具有 memsql 服务器中的所有默认配置。 谁能解释为什么它需要 90GB 来存储它?还是有任何配置问题?

【问题讨论】:

    标签: diskspace singlestore


    【解决方案1】:

    MemSQL 不会自行删除计划缓存中的文件。他们需要运行查询。对于您可能不再运行的查询(或在 ALTER 表操作之后),旧的\stale 文件可能会随着时间的推移而累积。您可以在服务器停止时删除 plancache 目录的内容(在 MemSQL 运行时不要这样做)。 MemSQL 将在您重新启动查询后第一次运行查询时重建它需要的任何文件。请注意,这会使重新启动后第一次执行查询的速度变慢(代码生成成本 - 这在 MemSQL 5 中要快得多)。

    【讨论】:

      【解决方案2】:

      这是 MemSQL 为每个查询创建的生成和编译代码。根据您正在运行 MemSQL 4 的 plancache 目录的内容。我建议升级到不使用 g++ 编译查询的 MemSQL 5。

      【讨论】:

      • 谢谢。但是有没有办法在不需要升级的情况下禁用此文件生成或自动删除?
      • 很遗憾,没有,MemSQL 需要这些文件来运行查询,因为每个文件都是一个单独的查询。至于自动删除,虽然引擎不这样做,但您可以查询计划缓存(show plancache)并删除与未列出的查询对应的任何文件。关联查询 -> 文件可能需要读取 .cc 文件的开头。
      猜你喜欢
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 2011-04-30
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多