Todos os produtos
Search
Central de documentação

PolarDB:Use Elastic Parallel Query to accelerate index creation

Última atualização: Aug 22, 2026

A criação de índices B-tree em tabelas grandes pode consumir muito tempo, bloquear janelas de manutenção e atrasar migrações de esquema. O Elastic Parallel Query (EPQ) paraleliza a varredura da tabela heap durante a criação do índice e reduz o tempo de construção para aproximadamente um quinto do método serial nativo.

Como funciona

Sem o EPQ, o PolarDB for PostgreSQL (Compatible with Oracle) varre a tabela heap sequencialmente para construir as entradas do índice e monta a estrutura B-tree a partir dessas entradas.

Com o EPQ ativado, um processo coordenador de consulta (QC) distribui a varredura da heap entre workers paralelos. Cada worker varre uma partição da tabela e encaminha os resultados ao processo de criação do índice, que monta a B-tree final.

Limitações

Limitação

Detalhes

Tipos de coluna

O EPQ acelera a criação de índices apenas em colunas gerais. Não há suporte para colunas de expressão.

Sintaxe

As opções CONCURRENTLY e INCLUDE não são compatíveis com o EPQ.

Parâmetros

Configure os parâmetros a seguir antes de criar índices com o EPQ.

Parâmetro

Padrão

Recomendado

Descrição

polar_px_enable_btbuild

off

on

Ativa a criação de índices acelerada por EPQ.

polar_px_dop_per_node

1

8 ou 16

Grau de paralelismo (DOP) por nó. Controla também o DOP para .

polar_px_enable_replay_wait

(automático)

Ativado automaticamente na sessão atual quando polar_px_enable_btbuild=on. Garante a indexação das entradas mais recentes da tabela. Retorna ao padrão do banco de dados após a conclusão da criação do índice.

polar_bt_write_page_buffer_size

0

4096

Controla o comportamento de E/S de gravação durante a criação do índice. Unidade: bloco. Máximo: 8192. Defina este valor como 4096 reduz o tempo de criação do índice em até 20%.

Comportamento de polar_bt_write_page_buffer_size

  • 0 (padrão): Grava as entradas do índice em disco bloco a bloco conforme cada página do índice é preenchida.

  • Valor diferente de zero: Armazena as entradas do índice em um buffer do kernel com o tamanho especificado e as grava todas de uma vez quando o buffer está cheio. Isso reduz a sobrecarga frequente de agendamento de E/S.

Crie um índice B-tree com EPQ

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um cluster PolarDB for PostgreSQL (Compatible with Oracle).

  • Permissão para executar instruções DDL na tabela de destino.

Procedimento

O exemplo a seguir cria uma tabela chamada test e constrói um índice usando o EPQ.

1. Crie a tabela de teste.

CREATE TABLE test(id int, id2 int);

Verifique o esquema da tabela:

\d test

Saída esperada:

               Table "public.test"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           |          |
 id2    | integer |           |          |

2. Ative a criação de índices acelerada por EPQ.

SET polar_px_enable_btbuild=on;

Verifique a configuração:

SHOW polar_px_enable_btbuild;

Saída esperada:

 polar_px_enable_btbuild
-------------------------
 on
(1 row)

3. Crie o índice.

Adicione WITH (px_build=on) à instrução CREATE INDEX para usar o EPQ nesta construção:

CREATE INDEX t ON test(id) WITH(px_build=on);
Apenas defina polar_px_enable_btbuild=on não ativa o EPQ para uma construção de índice específica. Inclua obrigatoriamente WITH (px_build=on) na instrução CREATE INDEX. Sem isso, o PolarDB usa o método nativo (serial) de criação de índice, e o índice resultante não exibirá a anotação px_build.

4. Verifique se o índice foi criado com EPQ.

\d test

Saída esperada:

               Table "public.test"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           |          |
 id2    | integer |           |          |
Indexes:
    "t" btree (id) WITH (px_build=finish)

O campo (px_build=finish) confirma o uso do EPQ.

Dados de desempenho

O EPQ cria índices para tabelas grandes aproximadamente cinco vezes mais rápido que o método nativo.

A figura a seguir compara o desempenho global de criação de índices antes e depois de ativar o EPQ, utilizando 130 GB de dados.

Performance comparison

Próximos passos