#### 17.2.3.2 监控复制应用程序工作线程

在多线程副本上，性能模式表[`replication_applier_status_by_coordinator`](performance-schema-replication-applier-status-by-coordinator-table.html)和[`replication_applier_status_by_worker`](performance-schema-replication-applier-status-by-worker-table.html)分别显示副本的协调线程和应用程序工作线程的状态信息。对于具有多个通道的副本，标识每个通道的线程。

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

已用秒数

当前时间与上次将此信息打印到错误日志的时间之间的差异（以秒为单位）。

分配的事件

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

工作人员队列已满溢出级别

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

由于工作队列已满而等待

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

由于总大小而等待

协调线程必须等待调度事件的次数，因为[`replica_pending_jobs_size_max`](replication-options-replica.html#sysvar_replica_pending_jobs_size_max)要么[`slave_pending_jobs_size_max`](replication-options-replica.html#sysvar_slave_pending_jobs_size_max)已达到上限。此系统变量设置可用于持有尚未应用的事件的应用程序工作线程队列的最大内存量（以字节为单位）。如果异常大的事件超过此大小，则事务将被保留，直到所有应用程序工作线程都有空队列，然后处理。所有后续交易都将保留，直到大笔交易完成。

等待时钟冲突

由于事件所依赖的事务尚未提交，协调器线程必须等待调度事件的纳秒数。如果[`副本并行类型`](replication-options-replica.html#sysvar_replica_parallel_type)要么[`slave_parallel_type`](replication-options-replica.html#sysvar_slave_parallel_type)被设定为`数据库`（而不是`LOGICAL_CLOCK`)，该值始终为零。

工人占用时等待（计数）

协调器线程短时间休眠的次数，它可能在两种情况下这样做。第一种情况是协调线程分配一个事件并发现应用程序工作线程的队列被填充超过最大队列长度的 10% 的欠载水平，在这种情况下，它最多休眠 1 毫秒。第二种情况是哪里[`副本并行类型`](replication-options-replica.html#sysvar_replica_parallel_type)要么[`slave_parallel_type`](replication-options-replica.html#sysvar_slave_parallel_type)被设定为`LOGICAL_CLOCK`并且协调器线程需要将事务的第一个事件分配给应用程序工作线程的队列，它只对具有空队列的工作人员执行此操作，因此如果没有队列为空，则协调器线程会休眠，直到一个为空。

工人占用时等待

协调器线程在等待空的应用程序工作线程队列时休眠的纳秒数（即在上述第二种情况下，其中[`副本并行类型`](replication-options-replica.html#sysvar_replica_parallel_type)要么[`slave_parallel_type`](replication-options-replica.html#sysvar_slave_parallel_type)被设定为`LOGICAL_CLOCK`并且需要分配事务的第一个事件）。
