【发布时间】:2019-04-10 21:12:21
【问题描述】:
发出msck repair table 语句时,在更新期间是否仍可访问该表以进行查询?
我之所以这么问,是因为我正试图为一个相对较大的 S3 配置单元表找出最佳更新计划,该表用于驱动 QuickSight 中的一些报告。发出此命令会破坏同时运行基于此表的 QuickSight 报告的任何人吗?
【问题讨论】:
标签: amazon-athena
发出msck repair table 语句时,在更新期间是否仍可访问该表以进行查询?
我之所以这么问,是因为我正试图为一个相对较大的 S3 配置单元表找出最佳更新计划,该表用于驱动 QuickSight 中的一些报告。发出此命令会破坏同时运行基于此表的 QuickSight 报告的任何人吗?
【问题讨论】:
标签: amazon-athena
是的,当您运行MSCK REPAIR TABLE 时,该表可用于运行查询,这是一个后台进程。但是,在该命令运行时运行的查询将看到不同的分区,因为该命令发现的分区将在找到时添加。
请注意,运行MSCK REPAIR TABLE 是一个非常低效的过程,有很多分区它会运行很长时间,而且它不是增量的。这对查询性能无关紧要,但如果现在需要很长时间,它只会花费越来越长的时间,并且可能不是一个可行的长期策略。 StackOverflow 上还有其他一些关于它的问题,您可以阅读这些问题以找到使表保持最新的其他策略。
【讨论】:
MSCK REPAIR TABLE 对新存储桶中的所有分区进行初始加载是否合理?在这种情况下,它的性能是否比将PARTITION 和ALTER TABLE 分别提供时更差?需要明确的是,这将是一次加载。在写入所有数据之前不会创建表,并且只有在那之后才会有效地读取。