原 Greenplum溢出文件
管理查询生成的溢出文件
如果没有足够的内存让一个SQL查询在内存中运行,Greenplum数据库会在磁盘上创建溢出文件(也被称为工作文件)。
默认的100,000个溢出文件对于大部分查询来说够用了。但是,如果一个查询创建的溢出文件超过指定个数,Greenplum数据库会返回这个错误:
1 | ERROR: number of workfiles per query limit exceeded |
导致生成大量溢出文件的原因包括:
- 在被查询的数据中存在数据倾斜。
- 为该查询分配的内存量太小。
通过更改该查询、更改数据分布或者更改系统内存配置可能可以让查询成功运行。可以使用 *gpworkfile*gpworkfile视图查看溢出文件使用信息。用Greenplum数据库的服务器配置参数max_statement_mem, statement_mem,或者资源队列可以控制查询所使用的最大内存量。
监控Greenplum系统 包含下列信息:
- 有关倾斜的信息以及如何检查数据倾斜
- 有关使用 *
gp_workfile_*
视图的信息
有关服务器配置参数的信息,请见 Greenplum数据库参考指南。有关资源队列的信息, 请见 使用资源队列.