Todos os produtos
Search
Central de documentação

PolarDB:Tecnologia de commit timestamp (CTS)

Última atualização: Jun 28, 2026

Em cargas de trabalho de processamento de transações online (OLTP) com alta concorrência, a lista de transações ativas do MySQL torna-se um gargalo. Cada início de transação, commit e verificação de visibilidade exige a aquisição do trx sys mutex, o que limita o throughput e impede o uso total de múltiplas vCPUs. O PolarDB for MySQL resolve esse problema com o PolarTrans, que substitui a lista de transações ativas pelo Commit Timestamp Store (CTS). Esse mecanismo em memória e livre de bloqueios rastreia o estado das transações usando timestamps de commit em vez de arrays protegidos por mutex.

Este tópico explica o funcionamento do CTS, as melhorias em cada etapa do ciclo de vida da transação e as mudanças de desempenho após a ativação do PolarTrans.

Versões compatíveis

Para ativar o PolarTrans por meio do recurso de consistência global (modo de alto desempenho), seu cluster PolarDB for MySQL Enterprise Edition deve atender a um dos seguintes requisitos de versão:

  • Versão do mecanismo 8.0.2 com versão de revisão 8.0.2.2.19 ou posterior

  • Versão do mecanismo 8.0.1 com versão de revisão 8.0.1.1.29 ou posterior

  • Versão do mecanismo 5.7 com versão de revisão 5.7.1.0.26 ou posterior

Para verificar a versão do seu cluster, consulte a seção "Query the engine version" em Engine versions .

Por que as listas de transações ativas limitam o desempenho

Bancos de dados relacionais tradicionais, como MySQL e PostgreSQL, implementam o Controle de Concorrência Multiversão (MVCC) usando uma lista de transações ativas. Em ambientes de alta concorrência, essa abordagem gera três problemas:

  • Uso incompleto de múltiplas vCPUs para processar transações concorrentes

  • Gargalos de desempenho quando muitas transações competem pelo trx sys mutex

  • Suporte inadequado a consistência de leitura, gravações em múltiplos pontos e gerenciamento de transações Extended Architecture (XA) em arquiteturas shared-nothing

O PolarTrans supera essas limitações ao substituir a lista de transações ativas pelo CTS. Em vez de copiar o estado da transação, o PolarTrans determina a visibilidade com base no timestamp máximo de commit do cluster. Os logs do CTS residem inteiramente em memória: cada transação é mapeada via módulo para um slot específico em um ring buffer conforme seu trx_id. Cada slot armazena um ponteiro trx e um número de sequência de commit (CSN).

Como o CTS melhora cada etapa da transação

A lista de transações ativas exige a aquisição de um trx sys mutex em três pontos críticos do ciclo de vida da transação. O CTS elimina essa necessidade em todas as etapas.

Etapa

Abordagem tradicional

PolarTrans (CTS)

Início da transação

Aloca um ID de transação, adiciona-o a rw_trx_ids, atualiza rw_trx_set e rw_trx_list — tudo sob trx sys mutex

Registra as informações da transação no log CTS, aloca um slot via módulo com base no trx_id e marca o slot com uma tag ativa — sem bloqueios

Commit da transação

Consulta rw_trx_ids, remove o ID da transação, atualiza rw_trx_set e rw_trx_list — sob trx sys mutex

Atribui um timestamp de commit e atualiza apenas o campo CSN no log CTS

Determinação de visibilidade

Copia o array de IDs de transações ativas, registra os IDs mínimo e máximo, consulta o array para determinar a visibilidade da linha — sob trx sys mutex

Compara o CSN da transação somente leitura com o campo trx csn no registro da linha, usando o timestamp máximo de commit do sistema em vez de uma read view

O PolarTrans implementa algoritmos livres de bloqueios na maior parte da lógica de transação para aumentar o throughput em cenários de leitura e gravação ou apenas gravação.

Comparação de desempenho

O teste a seguir mede as consultas por segundo (QPS) antes e depois da ativação do PolarTrans.

Ambiente de teste:

Parâmetro

Valor

Cluster

PolarDB for MySQL 8.0, Cluster Edition

Especificações

88 núcleos, 710 GB de memória

Ferramenta de teste

Sysbench

Volume de dados

88 tabelas, 12 milhões de linhas por tabela

Casos de teste:

Resultados: O PolarTrans aumenta significativamente o QPS em cenários de leitura e gravação e apenas gravação.

Em cenários somente leitura, o PolarTrans não traz melhorias de desempenho. Transações somente leitura já se beneficiam do cache de read view, que reduz a sobrecarga de bloqueios causada pela cópia do estado da transação.

Ative o PolarTrans

O PolarTrans é ativado por padrão ao habilitar o recurso de consistência global (modo de alto desempenho). Para obter instruções de configuração, consulte a seção "Enable global consistency (high-performance mode)" no tópico Visão geral.