你好,
业务需要,开发了一个分区的函数,实现分区表的自动分区(range分区),
现在问题是数据表有7000张,每到月中执行一次,扩展15天的分区,现在测试的情况是函数效率很低,定位到问题在greenplum中,把函数/存储过程当成了一整个事务,必须全部执行完毕才提交吗?
有没有办法做到没循环执行一个sql(alter table add partition,就提交一次)
附详细函数代码,不胜感激
-- Function: dwdb.proc_add_partition()
-- DROP FUNCTION dwdb.proc_add_partition();
CREATE OR REPLACE FUNCTION dwdb.proc_add_partition()
RETURNS void AS
$BODY$ DECLARE V_SQL1 TEXT;
V_SQL2 TEXT;
V_TABLENAME TEXT;
v_CNT NUMERIC;
V_TABLEDATE NUMERIC;
START_TIME_NUMERIC NUMERIC;
START_END_NUMERIC NUMERIC;
END_TIME_NUMERIC NUMERIC;
START_TIME_DATE TIMESTAMP WITHOUT TIME ZONE;
END_TIME_DATE TIMESTAMP WITHOUT TIME ZONE;
C_CUR1 CURSOR FOR
SELECT SCHEMANAME || '.' || TABLENAME,
MAX