Geralmente, quando uma transação é confirmada no PostgreSQL, imediatamente o processo de decodificação lógica será iniciado e converterá os dados do WAL em fluxo de dados para os consumidores. meu entendimento é
Commit » WAL » Processo de decodificação » Publicação para filtrar as tabelas » Slots para armazenar os dados
O que estou tentando entender é:
- Processo de decodificação - Isso decodificará o WAL, independentemente de seu consumidor estar ativo ou inativo, apenas decodifique e empurre-o para Slots. OU se estiver errado, o PostgreSQL não fará a decodificação e aguardará até que o consumidor seja ativado.
- Os slots são a área de armazenamento que contém os dados decodificados OU apenas manterá o estado.
- Processo de decodificação - habilitei a replicação lógica para uma tabela específica. Mas na outra mesa, fiz um bulk commit. Essa alteração também deve fazer parte do processo de decodificação, ele irá decodificar os dados e depois verificará na publicação. Se a tabela não estiver lá, simplesmente deixe-a e decodifique o próximo evento. Está correto?
Fiz um PoC para simular esse cenário. Tenho a resposta para todas as minhas perguntas.