雷竞技下载官网Percona XtraDB集群线程模型¶
雷竞技下载官网Percona XtraDB Cluster创建了一组线程来服务其操作,这与现有的MySQL线程无关。主要有三组线程:
灌肠器线程¶
应用程序线程应用该节点从其他节点接收到的写集。写消息是直接通过的gcv_recv_thread。
属性控制应用程序线程的数量wsrep_slave_threads变量或wsrep_applier_threads变量。的wsrep_slave_threads变量在Percona XtraDB Cluster 8.0.2雷竞技下载官网6-16发行版中已弃用。默认值为1,这意味着至少存在一个wsprep应用程序线程来处理请求。
应用程序线程等待一个事件,一旦它得到事件,它就使用普通的复制应用例程路径应用它,并使用wrepp -customization转发日志信息应用路径。这些线程类似于复制工作线程(但不完全相同)。
协调通过以下方式实现应用和提交监控器raybet雷竞技竞猜在线官网。一个事务要经过两个重要的状态:应用和提交。每个事务都将自己注册到应用监视器,其中定义了其应用顺序。raybet雷竞技竞猜在线官网因此,所有具有应用订单序列号(seqno)小于此事务序号的,则在应用此事务之前应用。对于commit也是如此(Last_left >= trx_0 .depends_seqno()).
回滚线程¶
在发生冲突时,只有一个回滚线程执行回滚。
并行执行的事务可能发生冲突,可能需要回滚。
应用程序事务总是优先于本地事务。这是很自然的,因为应用程序事务已经被集群接受,一些节点可能已经应用了它们。本地冲突事务仍然有一个回滚窗口。
所有需要回滚的事务都被添加到回滚队列中,并通知回滚线程。然后,回滚线程遍历队列并执行回滚操作。
如果某个节点上的事务是活动的,并且某个节点从集群组接收到与本地活动事务冲突的事务写集,那么这些本地事务总是被视为回滚的受害者事务。
发生冲突时,事务可以处于提交状态或执行阶段。执行阶段的本地事务将被强制终止,以便允许等待的应用程序事务继续进行。提交阶段的本地事务失败,并出现认证错误。
其他线程¶
服务线程¶
这个线程是在启动期间创建的,用于执行辅助服务。它有两个主要功能:
它在缓存的写集被清除到指定级别后释放GCache缓冲区。
它通知集群组,相应的节点已提交该级别的事务。每个节点维护集群中其他节点的一些基本状态信息。在接收到消息时,将更新此本地元数据中的信息。
接收线程¶
的gcs_recv_thread线程是第一个看到组中接收到的所有消息的线程。
它将尝试针对接收到的每条消息分配操作。它将这些消息添加到一个中央FIFO队列中,然后由appler线程处理。消息可以包括不同的操作,如状态更改、配置更新、流控制等等。
一个重要的操作是处理写集,它实际上是将事务应用到数据库对象。
Gcomm连接线程¶
gcomm连接线程GCommConn: run_fn用于协调低层次的群体交流活动。把它想象成一个用于交流的黑盒。
基于动作的线程¶
除此之外,一些线程是根据需要创建的。SST为捐赠者和joiner创建线程(它最终派生出一个子进程来承载所需的SST脚本),IST创建接收者和异步发送者线程,PageStore创建一个后台线程来删除创建的文件。
如果启用了校验和,并且复制的写集足够大,则校验和作为单独线程的一部分完成。