O PolarDB for MySQL usa o Compute Express Link (CXL) 2.0 para desacoplar computação, memória e armazenamento em três camadas independentes. A extensão de memória CXL, chamada PolarCXLMem, conecta um pool de memória compartilhado diretamente aos nós de computação por meio de instruções nativas de Load/Store — da mesma forma que a CPU acessa a DRAM local. Isso elimina a sobrecarga de protocolos de rede das soluções baseadas em Remote Direct Memory Access (RDMA) e expande a memória máxima de um único nó para 8 TB, com custo por gigabyte 30–50% menor que o da DRAM local. No modelo I/O-bound do sysbench, essa arquitetura melhora o desempenho em mais de 100%.
A pesquisa subjacente, "Unlocking the Potential of CXL for Disaggregated Memory in Cloud-Native Databases", recebeu o Best Paper Award na SIGMOD 2025.
A extensão de memória CXL está em versão canary. Para usar este recurso, envie um ticket.
Contexto
Requisito de alta prioridade.
Verificação: Não aplicável. Este documento é uma introdução ao CXL.
Site: Este conteúdo se aplica apenas ao site da Alibaba Cloud na China (www.aliyun.com).
Contato para tickets: Hualuo.
Escopo de aplicação
MySQL 8.0.2 (versão secundária do mecanismo 8.0.2.2.31.1 ou posterior).
Funcionamento
O PolarCXLMem usa o protocolo CXL.mem para mapear dispositivos de memória CXL no espaço de endereçamento físico do host. Do ponto de vista do mecanismo de banco de dados, a DRAM e a memória CXL formam um único Buffer Pool não hierárquico. A CPU lê e grava em ambos usando instruções nativas Load/Store, sem cópia de dados ou troca de páginas entre os níveis de memória.
O PolarCXLMem difere da arquitetura de desacoplamento de três camadas do PolarDB (RDMA). Na variante RDMA, o acesso à memória remota ocorre por meio de uma pilha de rede, o que envolve cópia de dados entre os níveis de memória. O PolarCXLMem mapeia a memória CXL diretamente no espaço de endereçamento físico do host, permitindo que a CPU a trate como memória local, sem sobrecarga de rede.
O diagrama a seguir mostra a arquitetura do PolarCXLMem:

A arquitetura possui três propriedades principais:
A. Buffer Pool unificado e não hierárquico. A DRAM e a memória CXL compartilham um único espaço de endereçamento. Ao contrário da memória desagregada baseada em RDMA, que copia páginas pela rede, o PolarCXLMem mapeia a memória CXL diretamente no espaço de endereçamento físico do host. Isso elimina a amplificação de gravação e a sobrecarga de movimentação de páginas entre níveis de memória.
B. Coerência de cache no nível de hardware. O protocolo CXL.cache mantém a consistência entre o cache da CPU e a memória CXL no nível de hardware. O software do banco de dados não exige gerenciamento adicional de cache, o que simplifica a arquitetura.
C. Recuperação de falhas em segundos (PolarRecv). O PolarRecv aproveita o recurso de persistência da memória CXL. Após uma falha, os dados do Buffer Pool na memória persistente CXL permanecem intactos — não é necessária a reprodução do redo log. O banco de dados carrega diretamente da memória CXL e retoma as operações em segundos, reduzindo o objetivo de tempo de recuperação (RTO) em mais de 40 vezes em comparação à recuperação convencional.
Em resumo, o PolarCXLMem trata a memória CXL como uma extensão unificada da DRAM local, utiliza Load/Store como única primitiva de acesso e emprega a persistência do CXL como base para recuperação de falhas.
Benefícios
|
Dimensão |
Detalhe |
|
Custo |
A memória CXL custa 30–50% menos por gigabyte que a DRAM local. Computação e memória escalam de forma elástica e independente, com pagamento conforme o uso. |
|
Capacidade |
O CXL supera os limites físicos de slots de memória de um único servidor, expandindo a memória máxima de um único nó de computação para 8 TB. |
|
Throughput |
Em cargas de trabalho OLTP — consultas pontuais, leituras mistas e leituras e gravações mistas — a adição de memória CXL aumenta o throughput do cluster em 20–112%. |
|
Recuperação |
O PolarRecv reduz o RTO de recuperação de falhas em mais de 40 vezes, diminuindo o tempo para segundos. |
Casos de uso
OLTP com uso intensivo de memória. Aplicações de redes sociais, jogos e e-commerce exigem acesso de baixa latência a relacionamentos de usuários, catálogos de produtos e pedidos em tempo real. Use a memória CXL para armazenar conjuntos de trabalho maiores em cache na memória e reduzir a sobrecarga de E/S com custo inferior ao dimensionamento da DRAM local.
Processamento analítico em larga escala (AP). Consultas complexas em grandes conjuntos de dados se beneficiam da capacidade expandida da memória CXL, que permite manter mais dados no Buffer Pool e reduzir as leituras de disco causadas por pressão de memória.
Ambientes de desenvolvimento e teste. A memória CXL permite simular configurações de produção com muita memória a um custo menor, sem provisionar a capacidade total de DRAM.
Treinamento e inferência de IA. O pooling de memória baseado em CXL também é adequado para cenários de treinamento e inferência de IA.
Relatório de teste de desempenho
Os dados a seguir são provenientes de um ambiente de teste específico e servem apenas como referência. O desempenho real depende das especificações do cluster, das características da carga de trabalho, dos padrões de dados e das definições de parâmetros.
Ambiente de teste
|
Plano A (linha de base) |
Plano B (extensão CXL) |
|
|
Cluster |
8 núcleos, 32 GB de DRAM |
8 núcleos, 32 GB de DRAM + 64 GB de CXL |
|
Memória total disponível |
32 GB |
96 GB |
|
Edição |
Enterprise Edition, Dedicated |
Enterprise Edition, Dedicated |
|
Versão do mecanismo |
MySQL 8.0.2 |
MySQL 8.0.2 |
Dados de teste: 40 tabelas, 10.000.000 de linhas por tabela.
Este teste mede o ganho de throughput obtido ao expandir a capacidade de memória com CXL. Ele não compara a memória CXL com uma quantidade equivalente de DRAM. A variável principal é o tamanho total do Buffer Pool, que determina quantos dados cabem na memória e com que frequência o banco de dados precisa ler do disco.
Resultados do teste
Após adicionar 64 GB de memória CXL, o total de consultas por segundo (QPS) do cluster aumentou em até 112%, pois um Buffer Pool maior reduz a E/S de disco.
Point queries (oltp_point_select)
Ao habilitar a memória CXL, o desempenho melhora entre 50% e 112%.

Mixed reads (oltp_read_only)
Com a memória CXL habilitada, o desempenho melhora entre 30% e 80%.

Mixed reads and writes (oltp_read_write)
Ao ativar a memória CXL, o desempenho melhora entre 20% e 50%.
