首页 > 代码库 > SQLSTATE58030
SQLSTATE58030
在优化一条SQL的时候遇到了执行错误
gtlions=# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1 gtlions-# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 and t1.sys_reported_time >= '2014-11-28 03:55:00' and t1.sys_reported_time <= '2014-11-28 04:00:00'; ERROR: could not create temporary file base/20350/pgsql_tmp/workfile_set_HashJoin_Slice0.XXXXva5ffL/spillfile_f261961:Too many open files ERROR: could not seek in temporary file: Bad file descriptor
对应的SQLSTATE是58030,文档上是这样描述的
58030 IO ERROR io_error
检查了下打开文件数以及系统限制
[root@mdw ~]# lsof -n|wc -l 23583 [root@mdw ~]# ulimit -Hn 131072 [root@mdw ~]# ulimit -Sn 131072
再次在执行过程中检查下打开的文件数量发现已经远远超出了系统限制(14xxx),对此解决办法是修改GPDB参数[statement_mem],可以在session level级别进行设置,将该值设置的足够大以便容纳的下临时操作或者排序的数据。当然也要对表进行统计分析,保证准确的统计信息。
对于从4.2.8.2版本开始可以有专门的参数[gp_workfile_limit_files_per_query]设置打开文件数量的。
-EOF-
SQLSTATE58030
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。