我在 Amazon Redshift 中的查询计划时间比执行时间长,我不知道为什么。
在生产负载上具有独占锁定的查询可能会增加锁定等待时间。此增加会导致您在 Amazon Redshift 中的查询计划时间远远长于实际执行时间。查看工作负载执行明细指标,确认查询计划时间是否突然增加。等待锁定的事务可能会导致时间增加。
要检测等待锁定的事务,请完成以下步骤:
为第一个锁定打开新的会话:
begin; lock table1;
打开第二个并行运行的会话,然后运行下列查询:
select * from table1 limit 1000;
此第二个会话中的查询将提交 AccessSharedLock 请求。由于第一个会话已申请 AccessExclusiveLock,因此第二个查询必须等待才能访问该锁定。然后,ExclusiveLock 将阻止 table1 上的所有其他操作。
查看工作负载执行明细指标。查询计划时间突然暴增可以确认有某个事务在等待锁定。
(可选)如果某个事务在等待锁定,请手动终止该会话以释放锁定:
select pg_terminate_backend(PID);
有关释放锁定的更多信息,请参阅如何在 Amazon Redshift 中检测和释放锁定?
分析工作负载性能
查询计划和执行工作流程