Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS红移中的查询结果大小_Amazon Web Services_Amazon Redshift - Fatal编程技术网

Amazon web services AWS红移中的查询结果大小

Amazon web services AWS红移中的查询结果大小,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,有没有一种好方法可以知道红移中的查询响应大小 其他提供者创建一个临时表(您也可以这样做),然后检查表大小。在红移中,临时表在svv_table_info视图中没有条目。创建临时表确实适用于您的情况,可以通过查看stv_区块列表找到所有表的大小。由于每个表都由块组成,并且所有块的大小都为1MB,因此表的大小为“从马口”。请记住,这提供了存储表所需的块,在某些情况下,这可能会产生误导-DISTSTYLE所有表都将有N个数据副本。一般来说,这是一种确定任何表大小的好方法。您还可以查询临时表中不同大小评

有没有一种好方法可以知道红移中的查询响应大小


其他提供者创建一个临时表(您也可以这样做),然后检查表大小。在红移中,临时表在svv_table_info视图中没有条目。

创建临时表确实适用于您的情况,可以通过查看stv_区块列表找到所有表的大小。由于每个表都由块组成,并且所有块的大小都为1MB,因此表的大小为“从马口”。请记住,这提供了存储表所需的块,在某些情况下,这可能会产生误导-DISTSTYLE所有表都将有N个数据副本。一般来说,这是一种确定任何表大小的好方法。您还可以查询临时表中不同大小评估的行数

临时表方法的缺点是设置数据并将其组织到表中所需的时间。您仍然需要为输出选择此数据,假设这是评估大小后的意图。处理可能过大的输出的一种更常见但更高级的方法是设置一个光标来保存输出

游标是红移前导节点上的输出缓冲区,它在传输到请求客户端之前保存查询结果。然后,光标内容可以一行一行地读取(通常为10000行),当需要更多数据时,读取更多的行。许多BI工具将使用游标,以便格式错误的报告不会用太多的数据淹没该工具。您还可以通过查看stv\u活动\u游标来查询游标的大小(行和字节)

游标的缺点是,它们需要从leader节点执行一些工作,但不是很多。严重过度使用/错误使用游标可能会减慢引线速度或可能填满引线节点的磁盘(但这不太可能,因为引线的磁盘大小与计算节点相同,但要存储的数据不多)。此外,由于游标是在循环中读取的,先取后处理,再取后处理,因此客户端通常是应用程序而不是用户。但是,为了在通过网络将输出拉出之前查看输出的大小,我以交互方式执行了游标-运行对游标的查询,读取游标的大小,如果大小合适,则读取一个块中的整个游标


底线-游标可能是您正在寻找的解决方案(在没有描述用例的情况下,我真的说不出来)。

创建临时表确实适用于您的案例,所有表的大小都可以通过查看stv_块列表找到。由于每个表都由块组成,并且所有块的大小都为1MB,因此表的大小为“从马口”。请记住,这提供了存储表所需的块,在某些情况下,这可能会产生误导-DISTSTYLE所有表都将有N个数据副本。一般来说,这是一种确定任何表大小的好方法。您还可以查询临时表中不同大小评估的行数

临时表方法的缺点是设置数据并将其组织到表中所需的时间。您仍然需要为输出选择此数据,假设这是评估大小后的意图。处理可能过大的输出的一种更常见但更高级的方法是设置一个光标来保存输出

游标是红移前导节点上的输出缓冲区,它在传输到请求客户端之前保存查询结果。然后,光标内容可以一行一行地读取(通常为10000行),当需要更多数据时,读取更多的行。许多BI工具将使用游标,以便格式错误的报告不会用太多的数据淹没该工具。您还可以通过查看stv\u活动\u游标来查询游标的大小(行和字节)

游标的缺点是,它们需要从leader节点执行一些工作,但不是很多。严重过度使用/错误使用游标可能会减慢引线速度或可能填满引线节点的磁盘(但这不太可能,因为引线的磁盘大小与计算节点相同,但要存储的数据不多)。此外,由于游标是在循环中读取的,先取后处理,再取后处理,因此客户端通常是应用程序而不是用户。但是,为了在通过网络将输出拉出之前查看输出的大小,我以交互方式执行了游标-运行对游标的查询,读取游标的大小,如果大小合适,则读取一个块中的整个游标


底线-游标可能是您正在寻找的解决方案(如果不描述用例,我真的说不出来)。

哇,谢谢你,比尔,令人惊讶的回答。我将检查两个临时表,它们不会出现在STV_块列表或SVV_磁盘使用视图中。可能是因为这些视图仅对超级用户可见,但它适用于非临时表。这是我正在做的查询
选择count(stv_blocklist.*)作为stv_blocklist、stv_tbl_perm中的大小,其中stv_blocklist.tbl=stv_tbl_perm.id和stv_blocklist.slice=stv_tbl_perm.slice和stv_tbl_perm.name='MY_TEMP_TABLE_TABLE_name'
光标一个正在工作,但大小与svv_TABLE_info视图中的大小相差很远。对于50MB以下的表,光标大小为表信息视图的一半。对于超过300MB的表,游标更大。也许我没有测试足够大的表,但到目前为止,游标总是返回所有行的总大小,即使你只要求几行,这对我们来说很好。为了记录,一些数字检查svv_table_info视图(table)和STV_ACTIVE_游标视图(cursor)在MB中:
cursor:5.5表:12下载的JSON文件:4.6表:27下载的JSON文件:37表:314。游标是即将传出的结果数据的缓冲区。