MySQL 8.0 参考手册  / 第十七章复制  / 17.2 复制实现  / 17.2.3 复制线程  /  16.2.3.2 监控复制应用程序工作线程

16.2.3.2 监控复制应用程序工作线程

在多线程副本上,性能模式表 replication_applier_status_by_coordinatorreplication_applier_status_by_worker 分别显示副本的协调器线程和应用程序工作线程的状态信息。对于具有多个通道的副本,标识每个通道的线程。

如果冗长设置设置为显示信息性消息,多线程副本的协调器线程还会定期将统计信息打印到副本的错误日志中。统计信息的打印取决于协调器线程已分配给应用程序工作线程的事件量,最大频率为每 120 秒一次。该消息列出了相关复制通道或默认复制通道(未命名)的以下统计信息:

经过的秒数

当前时间与上次将此信息打印到错误日志的时间之间的秒数差异。

分配的事件

自协调器线程启动以来,协调器线程已排队到所有应用程序工作线程的事件总数。

工人队列已满超过超限水平

当前排队到任何应用程序工作线程的事件数超过溢出级别,该级别设置为 16384 个事件的最大队列长度的 90%。如果此值为零,则没有应用程序工作线程以其容量上限运行。

由于工作队列已满而等待

由于应用程序工作线程的队列已满,协调器线程必须等待以安排事件的次数。如果此值为零,则没有应用程序工作线程耗尽其容量。

由于总大小而等待

slave_pending_jobs_size_max 由于已达到限制 ,协调器线程必须等待以安排事件的次数 。此系统变量设置可用于持有尚未应用的事件的应用程序工作线程队列的最大内存量(以字节为单位)。如果异常大的事件超过此大小,事务将被暂停,直到所有应用程序工作线程的队列都为空,然后再进行处理。所有后续交易都将暂停,直到大笔交易完成。

等待时钟冲突

协调器线程必须等待以安排事件的纳秒数,因为事件所依赖的事务尚未提交。如果 slave_parallel_type设置为DATABASE(而不是 LOGICAL_CLOCK),则此值始终为零。

工人占用时等待(计数)

协调器线程短时间休眠的次数,它可能在两种情况下休眠。第一种情况是协调器线程分配一个事件并发现应用程序工作线程的队列已填充超过最大队列长度 10% 的欠载级别,在这种情况下它最多休眠 1 毫秒。第二种情况是 where slave_parallel_type设置为LOGICAL_CLOCK并且协调器线程需要将事务的第一个事件分配给应用程序工作线程的队列,它只对队列为空的工作器执行此操作,因此如果没有队列为空,协调器线程会休眠直到一个队列变空。

等待工人占用

协调器线程在等待空应用程序工作线程队列时休眠的纳秒数(即,在上述第二种情况下,slave_parallel_type 设置为LOGICAL_CLOCK并且需要分配事务的第一个事件)。