原文地址:http://nonexttime.me/index.php/2015/06/16/greenplum-gp报错error-number-of-workfiles-per-query-limit-exceeded/
ERROR: number of workfiles per query limit exceeded
GreenPlum版本:4.3
问题:ERROR: number of workfiles per query limit exceeded
1.可能导致文件溢出过多的原因包括:
1>数据倾斜太严重
2>可供分配内存太低
2.可用的解决方法:
1>改变SQL查询语句、优化
2>改变数据分布,避免倾斜太严重
3>调整系统memory配置
3.具体步骤:
3.1查看数据分布的方法,然后借此来进行SQL优化或者数据重分布
1>查看分布键:
\d+meta-command
2>查看数据分布:
SELECT gp_segment_id, count(*)
FROM table_name GROUP BY gp_segment_id;
3>查看对于单个query的数据倾斜
查看源代码
SELECT gp_segment_id, count(*) FROM table_name
WHERE column='value' GROUP BY gp_segment_id;
3.2如果你确定你的SQL确实需要创建更多的溢出文件,那么可考虑修改gp_workfile_limit_files_per_query参数
$ gpconfig --show gp_workfile_limit_files_per_query
$ gpconfig -c gp_workfile_limit_files_per_query -v 256GB
修改后需要重启gp