10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 本手册摘录

MySQL 8.0参考手册/MySQL性能模式/性能模式表,用于当前和历史事件

27.9当前和历史事件的性能架构表

对于等待,阶段,语句和交易事件,性能模式可以监控和存储当前事件。此外,当事件结束时,性能架构可以将它们存储在历史表中。对于每个事件类型,性能模式使用三个表来存储当前和历史事件。表格有以下形式的名称,其中xxx表示事件类型(等待阶段陈述交易):

  • events_xxx_current: 这现在发生的事表存储了每个线程的当前监视事件(每个线程一行)。

  • events_xxx_历史: 这近年来的历史表存储每个线程中最近结束的事件(最多为每个线程的最大行数)。

  • events_xxx_history_long.: 这悠久的历史Table存储全局结束的最近的事件(跨所有线程,每个表最多包含多少行)。

_current每个事件类型的表中每个线程包含一行,因此没有用于配置其最大大小的系统变量。Performance Schema会自动调整历史表的大小,或者可以在服务器启动时使用特定于表的系统变量显式地配置历史表的大小,如描述各个历史表的部分所示。典型的自动调整值是每个线程10行_历史表,总共10,000行_history_long.表。

对于每个事件类型,_current_历史,_history_long.表格具有相同的列。这_current_历史表具有相同的索引。这_history_long.表没有索引。

_current表显示服务器内正在发生的内容。当前事件结束时,它将从其中删除_current表格

_历史_history_long.表显示最近发生的事情发生了什么。当历史表变得完整时,随着添加新事件,丢弃旧事件。行从_历史_history_long.表格以不同的方式,因为表格提供了不同的目的:

  • _历史旨在调查各个线程,独立于全局服务器负载。

  • _history_long.意味着在全球范围内调查服务器,而不是每个线程。

两种类型的历史表之间的差异涉及数据保留策略。在首次看到事件时,两个表包含相同的数据。但是,每个表中的数据随着时间的推移,每个表中的数据到期,因此可以在每个表中保留数据更长或更短的时间:

  • 为了_历史,当表包含给定线程的最大行数时,添加该线程的新行时,最旧的线程行被丢弃。

  • 为了_history_long.,当表满时,添加新行时丢弃最老的行,无论哪一个线程生成了这两行。

当线程结束时,其所有行都丢弃了所有行_历史表格但不是来自_history_long.表格

下面的示例说明了向这两种类型的历史表中添加和丢弃事件的方式的差异。这些原则同样适用于所有事件类型。这个例子基于以下假设:

  • 中的每个线程保留10行_历史中的总数为10,000行_history_long.表格

  • 线程A每秒生成1个事件。

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

  • 没有其他线程在运行。

在执行5秒之后:

  • A和B分别产生了5个和500个事件。

  • _历史包含B的A和10行的5行,因为每个线程的存储限制为10行,因此没有丢弃任何行,而490行被丢弃B。

  • _history_long.对于A包含5行,对于b包含500行。因为表的最大大小是10,000行,所以两个线程都没有丢弃任何行。

执行5分钟(300秒)后:

  • A和B分别生成300和30,000个事件。

  • _历史包含B的10行为B的10行。由于每个线程的存储限制为10行,因此丢弃了290行,而29,990行被丢弃用于B. A的数据,最多10秒的数据。B的行包括最多.1秒的数据。

  • _history_long.包含10,000行。因为A和B一起生成101个事件,表格包含高达大约10,000 / 101 = 99秒的数据,其中大约100到1的混合与A相反。