放大器和阀芯如何相互作用?仔细阅读解释计划

Posted

技术标签:

【中文标题】放大器和阀芯如何相互作用?仔细阅读解释计划【英文标题】:how do amps and spool interact with each other? Doing a close reading of EXPLAIN plan 【发布时间】:2018-10-12 22:19:55 【问题描述】:

有人可以帮我仔细阅读 EXPLAIN 计划吗?我想更好地阅读这些内容,但它们仍然让我感到困惑。 我把我理解的所有内容都用粗体写了出来,并附有问题。

解释 选择 不同的 ProcID FROM dbadmin.v_DBATraceLog;

1) 首先,我们锁定 dbadmin.DBATraceLog 以进行访问。 (锁定表)

2) 接下来,我们从 dbadmin.DBATraceLog 执行全 AMP 检索步骤 全行扫描的方式(所以全表扫描)

在 Spool 1 中没有剩余条件 (group_amps), (为什么叫 Spool 1?每个放大器有多少个 Spool,因为我认为每个用户只有一个 Spool 空间?为什么它说 group_amps?所有放大器都可以访问公共 Spool 1 或线轴 1 是每个放大器上的本地线轴吗?)

通过哈希码重新分配给所有 AMP。 (我猜这些行现在离开 Spool 1 并进入每个 AMP 上的磁盘空间)

然后我们进行排序以订购 Spool 1 (nvm,它仍在 Spool 1 上?)

通过 spool field1 中的排序键 (排序将相邻的记录放在一起,我想这就是消除重复的方法) 消除重复行。 Spool 1 的大小估计为 低置信度为 4,592 行。此步骤的预计时间 为 0.03 秒。

3) 最后,我们向所有涉及的 AMP 发送一个 END TRANSACTION 步骤 在处理请求时。 -> Spool 1 的内容作为以下结果发送回用户 声明 1. 总估计时间为 0.03 秒。


主要是我不明白 AMPS 和 Spool 是如何相互作用的。我的理解是,它是保留结果或暂存记录以进行重新分配的中间空间,因为连接必须在 amp-local 中进行。我认为这是一个所有放大器都可以平等访问的公共空间(尽管如果一个放大器需要超过 1/num_of_amps 数量的假脱机空间,则该过程中止)。

那为什么解释计划中有 Spool 编号?阀芯 1 或 3 在哪里?每个放大器上都有线轴 1 吗?在这种情况下,group_amps 是什么意思?

【问题讨论】:

【参考方案1】:

每个查询可能有多个假脱机,一个用于中间结果,一个用于最终结果集。中间线轴在一个步骤中创建,在后续步骤(或多个步骤)中使用并最终删除,由 (LastUse) 指示。答案集 spool(Spool n 的内容被发回)在结果集的最后一行已交付给客户端后被释放。

编号为 n 的线轴可能存在于单个 AMP、多个 AMP 或所有 AMP 上。 (group_amps) 表示优化器假定这是一个小结果,并且可能仅在某些 AMP 上创建假脱机(不会参与下一步)。

假脱机编号没有意义,它只是优化器分配的一个数字(尽管这些数字通常是连续的),当您在 Viewpoint 的 QueryMonitor 中检查相同的查询时,它会是一个不同的,通常更高的数字.

线轴可以

本地:每个 AMP 直接假脱机行而不与其他 AMP 交互 由(列列表)的哈希码重新分配:优化器为假脱机分配一个主索引,数据根据这些列的哈希进行分配。 在所有 AMP 上复制:每一行都复制到每个 AMP

SQL Request and Transaction Processing manual 中提供了有关解释输出的更多详细信息

【讨论】:

以上是关于放大器和阀芯如何相互作用?仔细阅读解释计划的主要内容,如果未能解决你的问题,请参考以下文章

什么是功率放大器,以及新款射频功率放大器

划重点,企业应该如何放大采购管理系统的作用

划重点!企业应该如何放大采购管理系统的作用?

运算放大器学习

在 vue 组件中放大 PDF 阅读器

推式放大如何工作?