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 亚马逊红移大表真空重新索引问题_Amazon Web Services_Amazon Redshift - Fatal编程技术网

Amazon web services 亚马逊红移大表真空重新索引问题

Amazon web services 亚马逊红移大表真空重新索引问题,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,我的表是500gb,有80多亿行,按4个键进行交错排序。 其中一个键的倾斜度为680+。运行真空重新索引需要很长时间,每十亿行大约需要5个小时 当我跟踪真空过程时,它会显示以下内容: SELECT * FROM svv_vacuum_progress; table_name | status | time_

我的表是500gb,有80多亿行,按4个键进行交错排序。 其中一个键的倾斜度为680+。运行真空重新索引需要很长时间,每十亿行大约需要5个小时

当我跟踪真空过程时,它会显示以下内容:

SELECT * FROM svv_vacuum_progress;
         table_name          |                                        status                                        | time_remaining_estimate 
-----------------------------+--------------------------------------------------------------------------------------+-------------------------
 my_table_name               | Vacuum my_table_name sort (partition: 1761 remaining rows: 7330776383)               | 0m 0s

我想知道多久才能完成,因为它没有给出任何时间估计。其当前正在处理的分区1761。。。可以知道某个表中有多少个分区吗?请注意,这些分区似乎是Redshift中的一些存储级别较低的层分区。

如果真空吸尘器运行缓慢,则群集上可能没有足够的空间。我建议在进行真空吸尘时,暂时将节点数量增加一倍

您可能还想考虑更改模式的设置方式。查看以下红移提示列表,看看您是否可以更改任何内容:

如果真空吸尘器运行缓慢,则群集上可能没有足够的空间。我建议在进行真空吸尘时,暂时将节点数量增加一倍

您可能还想考虑更改模式的设置方式。查看以下红移提示列表,看看您是否可以更改任何内容:

现在,建议您不要使用交错排序

排序算法给真空操作带来了巨大的负载,交错排序的好处只适用于非常小的用例

我建议您对WHERE子句中最常用的字段进行复合排序

最有效的排序是那些涉及始终递增的日期字段的排序。例如,假设将行添加到具有事务日期的表中。所有新行的日期都大于前几行。在这种情况下,实际上不需要真空,因为数据已经根据日期字段进行了排序


另外,请注意,500GB实际上是大量数据。重新排列该数量的数据需要时间。

现在,建议您不要使用交错排序

排序算法给真空操作带来了巨大的负载,交错排序的好处只适用于非常小的用例

我建议您对WHERE子句中最常用的字段进行复合排序

最有效的排序是那些涉及始终递增的日期字段的排序。例如,假设将行添加到具有事务日期的表中。所有新行的日期都大于前几行。在这种情况下,实际上不需要真空,因为数据已经根据日期字段进行了排序


另外,请注意,500GB实际上是大量数据。执行任何重新排列该数量数据的操作都需要时间。

我们恢复到上一阶段的方法是从备份快照中删除表并从预真空索引时间还原它。

我们恢复到上一阶段的方法是从备份快照中删除表并从预真空索引时间还原它备份快照。

谢谢Tom。将节点列表增加一倍会导致大量停机和数据重新平衡,对吗?这会让它进入只读模式一段时间,是的,但我认为这两种方式都是必须的。我还将根据我的链接检查您表上的编码。谢谢Tom。将节点列表增加一倍会导致大量停机和数据重新平衡,对吗?这会让它进入只读模式一段时间,是的,但我认为这两种方式都是必须的。我还将根据我的链接检查您表上的编码。谢谢您的输入。运行36小时后,真空重新索引现在完成。但最令人震惊的是,桌子的大小现在翻了一番!!!我试着只做一个真空删除,但那根本没有帮助。。。。我不知道这里发生了什么事。当正常的全真空运行在这个表上时,它再次尝试对8个Bil行进行排序。。。我杀死了常规的全真空,因为我认为它可能会再次将表的大小增加一倍,在这一点上它将杀死数据库!第一个明显的建议。。。拍一张快照!第二创建具有非交错排序的等效表,并执行SELECT INTO。运行一些典型的查询,看看您对性能是否满意,然后重命名表以使用非交错版本。感谢您的输入。运行36小时后,真空重新索引现在完成。但最令人震惊的是,桌子的大小现在翻了一番!!!我试着只做一个真空删除,但那根本没有帮助。。。。我不知道这里发生了什么事。当正常的全真空运行在这个表上时,它再次尝试对8个Bil行进行排序。。。我杀死了常规的全真空,因为我认为它可能会再次将表的大小增加一倍,在这一点上它将杀死数据库!第一个明显的建议。。。拍一张快照!第二创建具有非交错排序的等效表,并执行SELECT INTO。运行一些典型的查询,看看您是否对性能满意,然后重命名这些表以使用非交错版本。