Snowflake cloud data platform 使用存储过程的表插入?
提交一个雪花用户,希望获得额外的帮助 是否有其他方法可以更快地使用存储过程执行表插入? 我开始构建一个usp,目的是在一个表中插入大约一百万行的测试数据,以便进行负载测试 我进入了下面的这个阶段,并将迭代值设置为10000 这需要10分钟来迭代10000次,以便在每次迭代中向表中插入一个整数 是的-我使用的是XS数据仓库,但即使这是增加到最大值-这是一种减缓任何用途的方法 -建立一个测试表Snowflake cloud data platform 使用存储过程的表插入?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,提交一个雪花用户,希望获得额外的帮助 是否有其他方法可以更快地使用存储过程执行表插入? 我开始构建一个usp,目的是在一个表中插入大约一百万行的测试数据,以便进行负载测试 我进入了下面的这个阶段,并将迭代值设置为10000 这需要10分钟来迭代10000次,以便在每次迭代中向表中插入一个整数 是的-我使用的是XS数据仓库,但即使这是增加到最大值-这是一种减缓任何用途的方法 -建立一个测试表 CREATE OR REPLACE TABLE myTable ( myInt NUMERIC(18
CREATE OR REPLACE TABLE myTable
(
myInt NUMERIC(18,0)
);
-使用while语句测试jsusp,目的是在表中插入多行以进行负载测试
CREATE OR REPLACE PROCEDURE usp_LoadTable_test()
RETURNS float
LANGUAGE javascript
EXECUTE AS OWNER
AS
$$
//set the number of iterations
var maxLoops = 10;
//set the row Pointer
var rowPointer = 1;
//set the Insert sql statement
var sql_insert = 'INSERT INTO myTable VALUES(:1);';
//Insert the fist Value
sf_startInt = rowPointer + 1000;
resultSet = snowflake.execute( {sqlText: sql_insert, binds: [sf_startInt] });
//Loop thorugh to insert all other values
while (rowPointer < maxLoops)
{
rowPointer += 1;
sf_startInt = rowPointer + 1000;
resultSet = snowflake.execute( {sqlText: sql_insert, binds: [sf_startInt] });
}
return rowPointer;
$$;
CALL usp_LoadTable_test();
到目前为止,我收到了以下建议:
建议1
您可以做的一件事是使用包含1000行或更多行的进料器表,而不是插入。。。价值观,例如:
建议2
当执行一百万个单行插入时,会消耗一百万个微分区——每个16MB
16 TB的存储容量可能会出现在您的雪花账单上。。。正常表格在下降后至少保留7天
为了优化存储,您可以定义一个集群键并以升序加载表,每个块尽可能多地填充一个微分区
建议3
如果需要顺序整数,请使用工作速度非常快的数据生成函数:
还有其他想法吗?几个星期前,雪花小屋也提出了这个问题。 考虑到你收到的答案,你是否仍然觉得没有答案,然后可能会暗示为什么
如果您只需要一个包含单列序列号的表,请使用上面第3节中的生成器。否则,如果您需要更多建议,请分享您的具体要求。如果您有答案,请分享答案,我们可以在新的堆栈溢出空间中帮助彼此成长。我看到你非常热衷于帮助客户,谢谢你!
INSERT INTO myTable SELECT <some transformation of columns> FROM "feeder table"