MySQL如何确定并行从属工作线程是否有效利用

适用于:MySQL Server - Version 8.0 and later

使用slave_parallel_workers=N设置时,如何确定活动线程的数量?

可以使用以下查询在performance_schema中找到所需事件的线程信息:

SELECT performance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_ID AS THREAD_ID,
performance_schema.events_transactions_summary_by_thread_by_event_name.COUNT_STAR AS COUNT_STAR
FROM performance_schema.events_transactions_summary_by_thread_by_event_name
WHERE performance_schema.events_transactions_summary_by_thread_by_event_name.THREAD_ID IN
(SELECT performance_schema.replication_applier_status_by_worker.THREAD_ID
FROM performance_schema.replication_applier_status_by_worker);

这将显示每个线程的线程id和事务计数。

它们的大小应该大致相同,但是,如果有任何线程显示低计数或零计数,则说明线程太多。如果这个数字非常高,那么您可能想要尝试增加slave_parallel_workers的值,然后再次进行测试。

有关其工作原理的更多信息,请查看:  https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_slave_parallel_workers