Todos os produtos
Search
Central de documentação

PolarDB:Uso do X-Engine

Última atualização: Jun 28, 2026

Saiba como usar o X-Engine.

Alterar o mecanismo da tabela para X-Engine

Execute a instrução a seguir para alterar o mecanismo de uma tabela de InnoDB para X-Engine.

ALTER TABLE <database name>.<table name> ENGINE xengine;
Nota

A instrução ALTER bloqueia operações de escrita (DML e DDL) na tabela durante a conversão do mecanismo.

Crie uma tabela X-Engine

Para criar uma tabela X-Engine em um cluster que utiliza tanto X-Engine quanto InnoDB, especifique o X-Engine como mecanismo de armazenamento. Exemplo de instrução:

CREATE TABLE t1(c1 int primary key , c2 int) ENGINE=xengine;

Ajustar a alocação de recursos de memória

Ajuste a proporção de recursos de memória conforme as necessidades do seu negócio na aba X-Engine (Warm Data) da página Settings and Management > Data Lifecycle do cluster.image

A tabela a seguir apresenta configurações recomendadas de proporção de memória para três casos de uso típicos. Ajuste a configuração conforme sua carga de trabalho específica.

Caso de uso

Memória InnoDB (%)

Memória X-Engine (%)

O InnoDB armazena dados quentes e o X-Engine armazena dados frios. Os dados frios arquivados raramente são acessados.

80

20

O InnoDB armazena dados quentes e o X-Engine armazena dados mornos. Os dados mornos arquivados ainda sofrem atualizações ou consultas.

50

50

O InnoDB armazena poucas tabelas e o X-Engine armazena muitas tabelas. Os dados em ambos os mecanismos recebem atualizações ou consultas ativas.

20

80

Limitações

O mecanismo de alta compressão (X-Engine) possui limitações relacionadas ao próprio mecanismo e à funcionalidade de transações grandes.

Limitações de recursos do mecanismo

Categoria

Recurso

Descrição

Recursos SQL

chave estrangeira

Não suportado

tabela temporária

Não suportado

coluna gerada

Não suportado

API handler

Não suportado

Colunas e propriedades de colunas

Número máximo de colunas por tabela

10.000

comprimento máximo do registro

256 MB

Tipo de dados GIS

O X-Engine não suporta nenhum tipo de dados relacionado a GIS, incluindo geometry, point, linestring, polygon, multipoint, multilinestring, multipolygon e geometrycollection.

índice

índice hash

Não suportado

índice espacial

Não suportado. Recursos para índices de texto completo também não são suportados.

transação

nível de isolamento de transação

Os dois níveis de isolamento a seguir são suportados:

  • Read committed (RC)

  • Repeatable read (RR)

Máximo de linhas por transação

Por padrão, uma única transação pode conter até 100.000 linhas. Altere esse limite usando o parâmetro loose_xengine_bulk_load_size.

savepoint

Não suportado

Transação XA

Transações XA internas são suportadas.

bloqueio

granularidade de bloqueio

  • Bloqueios no nível de tabela e no nível de linha são suportados.

  • Bloqueios de intervalo (gap locks) não são suportados.

Skip Locked

Não suportado

Lock Nowait

Não suportado

conjunto de caracteres

Conjuntos de caracteres suportados para colunas não indexadas

Todos os conjuntos de caracteres e collations são suportados para colunas não indexadas.

Conjuntos de caracteres suportados para colunas indexadas

  • latin1 (latin1_bin)

  • gbk (gbk_chinese_ci, gbk_bin)

  • utf8 (utf8_general_ci, utf8_bin)

  • utf8mb4 (utf8mb4_0900_ai_ci, utf8mb4_general_ci, utf8mb4_bin)

replicação primária/secundária

formato de binary log

Os três formatos a seguir são suportados:

  • stmt

  • row

  • mixed

Nota

O formato padrão é row. O uso dos formatos stmt ou mixed pode comprometer a segurança dos dados em cenários específicos de alta concorrência.

Nota

Para quaisquer recursos não listados neste tópico, o X-Engine comporta-se de forma idêntica ao InnoDB.

Limitações de transações grandes

O X-Engine não suporta transações grandes. Quando uma transação modifica 10.000 linhas ou mais, o X-Engine ativa o recurso commit in middle. Esse recurso faz com que o X-Engine confirme internamente a transação atual e inicie uma nova subtransação para continuar a operação. No entanto, o commit in middle não garante estritamente a atomicidade transacional. Fique atento às seguintes implicações:

  • Ao iniciar uma transação para inserir um grande volume de dados, o recurso commit in middle pode confirmar uma parte dos dados antes que a transação seja concluída. Esses dados parcialmente confirmados tornam-se visíveis para outras transações simultâneas.

  • Não é possível reverter completamente uma transação que o recurso commit in middle tenha confirmado parcialmente.

    DROP TABLE t1;
    CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
    BEGIN;
    call insert_data(12000); // Insert 12,000 rows to trigger commit in middle. The first 10,000 rows are committed.
    rollback;// The rollback operation can only undo the last 2,000 rows.
    SELECT COUNT(*) FROM t1; // The query still finds the 10,000 committed rows.
    +----------+
    | COUNT(*) |
    +----------+
    |    10000 |
    +----------+
    1 row in set (0.00 sec)
  • Devido ao recurso commit in middle, se uma transação inserir e depois excluir um grande número de linhas, a operação DELETE pode não visualizar as linhas recém-inseridas.

    DROP TABLE t1;
    CREATE TABLE t1(c1 int primary key , c2 int)ENGINE=xengine;
    call insert_data(10000);
    BEGIN;
    INSERT INTO t1 VALUES(10001,10001), (10002,10002);
    DELETE FROM t1 WHERE c1 >= 0; // The DELETE operation triggers commit in middle, causing it to miss the rows inserted within the same transaction.
    commit;
    SELECT * FROM t1;
    +-------+-------+
    | c1    | c2    |
    +-------+-------+
    | 10001 | 10001 |
    | 10002 | 10002 |
    +-------+-------+
    2 rows in set (0.00 sec)

Parâmetros

Modifique os parâmetros na tabela abaixo conforme os requisitos do seu negócio. Para instruções detalhadas, consulte Definir parâmetros de cluster e nó.

O método para modificar parâmetros de cluster do PolarDB difere entre o console e uma sessão de banco de dados. As diferenças são as seguintes:

  • No console do PolarDB

    • Compatibilidade: Para compatibilidade com arquivos de configuração do MySQL, alguns parâmetros de cluster no console do PolarDB possuem o prefixo loose_.

    • Procedimento: Localize e modifique os parâmetros que possuem o prefixo loose_.

  • Em uma sessão de banco de dados (usando a linha de comando ou um cliente)

    • Procedimento: Ao usar o comando SET para modificar um parâmetro em uma sessão de banco de dados, remova o prefixo loose_ e utilize o nome original do parâmetro.

Categoria

Parâmetro

Descrição

Modificável

Reinicialização necessária

Desempenho

xengine_batch_group_max_group_size

Número máximo de grupos em um pipeline de transações.

Não

N/A

xengine_batch_group_max_leader_wait_time_us

Tempo máximo de espera para o pipeline de transações.

Não

N/A

xengine_batch_group_slot_array_size

Tamanho máximo de lote do pipeline de transações.

Não

N/A

xengine_parallel_read_threads

Número de threads usadas para varreduras paralelas.

Sim

Não

xengine_parallel_wal_recovery

Controla se a recuperação paralela de WAL deve ser ativada.

Não

N/A

Memória

xengine_block_cache_size

Tamanho do cache de blocos para dados de tabela e índices.

Sim

Não

xengine_row_cache_size

Tamanho do cache de linhas.

Não

N/A

xengine_write_buffer_size

Tamanho máximo de uma única memtable.

Não

N/A

xengine_block_size

Tamanho de um bloco de dados em disco.

Não

N/A

xengine_db_write_buffer_size

Limite de tamanho total das memtables ativas em todas as subtabelas.

Não

N/A

xengine_db_total_write_buffer_size

Limite de tamanho total das memtables ativas e imutáveis em todas as subtabelas.

Sim

Não

xengine_scan_add_blocks_limit

Número de blocos que podem ser adicionados ao cache de blocos para cada solicitação de varredura de intervalo.

Sim

Não

Compactação

xengine_flush_delete_percent_trigger

Número de registros que aciona uma troca de memtable.

Não

N/A

Bloqueio

xengine_max_row_locks

Número máximo de linhas que uma única solicitação SQL pode bloquear.

Não

N/A

xengine_lock_wait_timeout

Período de tempo limite de espera de bloqueio.

Sim

Não