2016-06-22 65 views
0

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

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来存储这个?或者它是任何配置问题?

回答

2

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

2

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

+0

谢谢。但是有没有办法可以禁用这个文件生成或者在不需要升级时自动删除? –

+0

不幸的是,MemSQL需要这些文件来运行查询,因为每个文件都是单独的查询。至于自动删除,虽然引擎不执行此操作,但您可以查询plancache('show plancache')并删除与未列出的查询相对应的任何文件。关联查询 - >文件可能需要读取'.cc'文件的开头。 –