25.9 当前和历史事件的性能架构 table

对于 await,阶段,语句和事务事件,性能模式可以监视和存储当前事件。此外,事件结束时,性能架构可以将它们存储在历史记录 table 中。对于每种事件类型,性能模式都使用三个 table 来存储当前事件和历史事件。这些 table 具有以下形式的名称,其中* xxx *table 示事件类型(waitsstagesstatementstransactions):

每种事件类型的_currenttable 每个线程包含一行,因此没有用于配置其最大大小的系统变量。性能架构会自动调整历史记录 table 的大小,或者可以在服务器启动时使用 table 特定的系统变量来显式配置大小,如描述各个历史 table 的各节所述。自动调整的典型值是:对于_history个 table,每个线程 10 行,对于_history_longtable,总计 10,000 行。

对于每种事件类型,_current_history_history_longtable 具有相同的列。

_currenttable 显示了服务器内部当前正在发生的情况。当前事件结束后,会将其从其_currenttable 中删除。

_history_history_longtable 显示了最近发生的情况。当历史记录 table 已满时,旧事件将被丢弃,而新事件将被添加。 _history_history_longtable 中的行以不同的方式到期,因为 table 具有不同的用途:

两种类型的历史记录 table 之间的差异与数据保留策略有关。首次看到事件时,两个 table 都包含相同的数据。但是,每个 table 中的数据随着时间的推移会有所不同,因此在每个 table 中数据保留的时间可能更长或更短:

当线程结束时,其所有行将从_historytable 中丢弃,但不会从_history_longtable 中丢弃。

下面的示例说明了如何将事件添加到两种类型的历史记录 table 中以及从中删除事件的区别。这些原则同样适用于所有事件类型。该示例基于以下假设:

线程 B 每秒生成 100 个事件。

执行 5 秒后:

执行 5 分钟(300 秒)后:

首页