Todos os produtos
Search
Central de documentação

Hologres:Hologres: Dynamic Partition Management

Última atualização: Sep 18, 2026

O recurso de particionamento automático do Hologres automatiza a criação e o gerenciamento de partições com base em regras definidas para uma tabela particionada, eliminando a necessidade de configuração prévia. Esse recurso também move dados qualificados para o armazenamento frio, reduzindo os custos de armazenamento sem comprometer o desempenho das consultas.

Visão geral

O recurso de particionamento automático evoluiu ao longo de várias versões do Hologres:

  • Hologres V1.3: Introduziu o particionamento automático, que execute periodicamente tarefas agendadas para pré-criar e exclua partições com base em regras definidas pelo usuário.

  • Hologres V1.3.37: Adicionou suporte a armazenamento em camadas, que arquiva dados automaticamente no armazenamento frio para reduzir custos. Para mais informações, consulte Tiered Storage.

  • A partir do Hologres V2.1.11, o particionamento dinâmico passou a suportar o tipo Date como chave de partição.

  • Hologres V2.2: Adicionou a propriedade schd_start_time à configuração de particionamento automático, permitindo personalizar o agendamento de criação, exclusão e arquivamento de partições.

  • Hologres V3.0.12: Adicionou o parâmetro auto_partitioning_time_format para especifique o formato de data e hora da chave de partição, possibilitando a criação de partições no formato YYYY-MM-DD.

Observações

  • Os dados devem ser gravados em uma tabela filha, não diretamente na tabela pai.

    O Realtime Compute for Apache Flink pode gravar dados em uma tabela pai em tempo real. Para detalhes, consulte Write data to a partitioned Hologres sink table in real time .
  • O Hologres suporta apenas particionamento por lista (PARTITION BY LIST).

  • A chave de partição deve ser uma única coluna.

  • Cada regra de particionamento pode ser usada para crie apenas uma tabela particionada.

  • Se a tabela pai tiver uma chave primária, a coluna da chave de partição deve fazer parte dessa chave primária.

  • No particionamento dinâmico, o horário de agendamento (schd_start_time) se aplica somente à tabela pai, não às tabelas filhas.

  • O parâmetro auto_partitioning_time_format é imutável. É possível especifique-o na instrução CREATE TABLE para uma nova tabela, mas não é possível modifique-o em uma tabela existente.

  • Os nomes das tabelas filhas seguem o formato de data especificado pelo parâmetro auto_partitioning_time_format. Ao consultar uma tabela filha, coloque o nome entre aspas duplas. Por exemplo: SELECT xxx FROM "tbl_2024_11_22".

Configure o particionamento automático

Sintaxe

Configure as propriedades de particionamento automático ao criar uma tabela particionada ou em uma tabela já existente.

Using the WITH clause

  • Configure as propriedades de particionamento automático ao criar uma tabela particionada.

    -- Configure automatic partitioning properties when you create a partitioned table.
    CREATE TABLE [IF NOT EXISTS] [<schema_name>.]<table_name>  ([
      {
       <column_name> <column_type> [ <column_constraints>, [...]]
       | <table_constraints>
       [, ...]
      }
    ])
    PARTITION BY LIST(<column_name>)
    WITH (
       auto_partitioning_enable = 'xxx',
       auto_partitioning_time_unit = 'xxx',
       auto_partitioning_time_zone = 'xxx',
       auto_partitioning_num_precreate = 'xxx',
       auto_partitioning_num_retention = 'xxx',
       auto_partitioning_num_hot='xxx',
       -- Note: The auto_partitioning_schd_start_time property is supported in Hologres V2.2 and later.
       auto_partitioning_schd_start_time = 'xxx',
       -- Note: The auto_partitioning_time_format property is supported in Hologres V3.0.12 and later.
       auto_partitioning_time_format = 'xxx'
    );
  • Modifique as propriedades de particionamento automático de uma tabela particionada existente.

    -- Modify automatic partitioning properties.
    ALTER TABLE [<schema_name>.]<table_name> SET (
       auto_partitioning_enable = 'xxx',
       auto_partitioning_time_unit = 'xxx',
       auto_partitioning_time_zone = 'xxx',
       auto_partitioning_num_precreate = 'xxx',
       auto_partitioning_num_retention = 'xxx',
       auto_partitioning_num_hot='xxx',
       -- Note: The auto_partitioning_schd_start_time property is supported in Hologres V2.2 and later.
       auto_partitioning_schd_start_time = 'xxx',
       -- Note: The auto_partitioning_time_format property is supported in Hologres V3.0.12 and later.
       auto_partitioning_time_format = 'xxx'
    );
    

Using the CALL command

  • Configure as propriedades de particionamento automático ao criar uma tabela particionada.

    -- Configure automatic partitioning properties when you create a partitioned table.
    BEGIN;
    CREATE TABLE [IF NOT EXISTS] [<schema_name>.]<table_name>  ([
      {
       <column_name> <column_type> [ <column_constraints>, [...]]
       | <table_constraints>
       [, ...]
      }
    ])
    PARTITION BY LIST(<column_name>);
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.enable', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_unit', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_zone', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_precreate', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_retention', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_hot', 'xxx');
    -- Note: The auto_partitioning.schd_start_time property is supported in Hologres V2.2 and later.
    CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.schd_start_time', 'xxx');
    -- Note: The auto_partitioning.time_format property is supported in Hologres V3.0.12 and later.
    CALL set_table_property ('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx');
    COMMIT;
  • Modifique as propriedades de particionamento automático de uma tabela particionada existente.

    -- Modify automatic partitioning properties.
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.enable', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_precreate', 'xxx');
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.num_retention', 'xxx');
    -- Note: The auto_partitioning.time_format property is supported in Hologres V3.0.12 and later.
    CALL set_table_property('[<schema_name>.]<table_name>', 'auto_partitioning.time_format', 'xxx');

Parâmetros

Importante

Ao usar a sintaxe CREATE TABLE WITH para configure o particionamento automático, substitua os pontos (.) nos nomes das propriedades por sublinhados (_). Por exemplo, altere auto_partitioning.enable para auto_partitioning_enable.

Parâmetro

Obrigatório

Descrição

Atualizável

Requisitos de versão

auto_partitioning_enable/auto_partitioning.enable

Não

Controla se o particionamento automático está ativado. Valores válidos:

  • true: Ative o particionamento automático.

  • false (padrão): Desativa o particionamento automático.

Sim

Hologres V1.3 e versões posteriores

auto_partitioning_time_unit/auto_partitioning.time_unit

Sim

Defina a unidade de tempo para o particionamento. Valores válidos:

  • HOUR

  • DAY

  • MONTH

  • QUARTER

  • YEAR

Por exemplo, ao defina esta propriedade como DAY, as partições são pré-criadas e excluídas diariamente.

Não

auto_partitioning_time_zone/auto_partitioning.time_zone

Não

Defina o fuso horário para o particionamento. O padrão é o fuso horário da sessão atual. Após configure esta propriedade, as partições passam a ser gerenciadas com base no fuso horário especificado.

Execute a instrução SQL a seguir para listar os fusos horários disponíveis. A coluna name no resultado, como Asia/Shanghai, indica um valor válido para o parâmetro time zone.

SELECT * FROM pg_timezone_names;

Não

auto_partitioning_num_precreate/auto_partitioning.num_precreate

Não

Defina o número de partições a pré-criar. Valores válidos:

  • 0: Não pré-crie partições.

  • Um inteiro de 1 a 512: Pré-crie um número de partições futuras a partir da unidade de tempo atual. Recomenda-se um valor igual ou superior a 2. Padrão: 4.

Nota

Por exemplo, se a data atual for 10/01/2022 e você defina time_unit = DAY, num_precreate = 3, o Hologres criará partições para 10/01/2022, 11/01/2022 e 12/01/2022.

Importante

A pré-criação de partições afeta o comportamento da função MAX_PT. Antes de usar esta propriedade, verifique seu impacto em qualquer aplicação que dependa da função MAX_PT.

Sim

auto_partitioning_num_retention/auto_partitioning.num_retention

Não

Defina o número de partições históricas a reter. Valores válidos:

  • 0: Não retém partições históricas.

  • -1 (padrão): Retém todas as partições históricas.

  • Um inteiro positivo: Retém N partições históricas. O valor máximo é 512.

Execute set hg_experimental_auto_part_max_maintained_partitions=<value>; para ajustar o número máximo de partições retidas até 8.760.

Nota

Por exemplo, se a data atual for 10/01/2022 e time_unit = DAY, num_retention = 3, o Hologres reterá as partições de 09/01/2022, 08/01/2022 e 07/01/2022. As partições criadas antes de 07/01/2022 serão excluídas.

Sim

auto_partitioning_num_hot/auto_partitioning.num_hot

Não

Defina o número de partições quentes a reter. Partições quentes são aquelas no armazenamento quente. Valores válidos:

  • 0: Não retém partições quentes.

  • -1 (padrão): Retém todas as partições quentes.

  • Um inteiro positivo: Retém N partições quentes. O valor máximo é 512.

Sim

Hologres V1.3.37 e versões posteriores

auto_partitioning_schd_start_time/auto_partitioning.schd_start_time

Não

Defina um horário personalizado para execute a tarefa de particionamento. Por padrão, essa tarefa é executada no início de cada hora quando auto_partitioning.time_unit está definido como HOUR, e às 00:00:01 para todas as demais unidades de tempo.

Use esta propriedade para alterar o horário de agendamento. Para informações sobre os formatos suportados, consulte Time Formats. Se um horário futuro for definido, o agendamento entra em vigor nesse momento.

Sim

Hologres V2.2 e versões posteriores

auto_partitioning_time_format/auto_partitioning.time_format

Não

Defina o formato de string do valor da chave de partição.

  • Formatos padrão: YYYYMMDDHH24 (HOUR), YYYYMMDD (DAY), YYYYMM (MONTH), YYYYQ (QUARTER) e YYYY (YEAR).

  • Formatos opcionais: YYYY-MM-DD-HH24 (HOUR), YYYY-MM-DD (DAY), YYYY-MM (MONTH) e YYYY-Q (QUARTER).

Não

Hologres V3.0.12 e versões posteriores

Regras de nomenclatura das tabelas filhas

Ao defina a propriedade auto_partitioning.time_unit como HOUR, DAY, MONTH, QUARTER ou YEAR, o Hologres nomeia as novas tabelas filhas acrescentando um sufixo de tempo ao nome da tabela pai. O formato é {parent_table}_{time_suffix}. O sufixo de tempo é gerado com base no agendamento de particionamento automático e no modelo de formato da unidade de tempo especificada. A tabela a seguir descreve os mapeamentos.

Unidade de tempo

Formato do sufixo de tempo

Exemplo de sufixo

Horário de agendamento

HOUR

YYYYMMDDHH24

2024112221

No início de cada hora. Exemplo: 21:00:01 do dia 22 de novembro de 2024.

YYYY-MM-DD-HH24

2024-11-22-21

DAY

YYYYMMDD

20241122

Às 00:00:01 de cada dia. Exemplo: 00:00:01 do dia 22 de novembro de 2024.

YYYY-MM-DD

2024-11-22

MONTH

YYYYMM

202411

Às 00:00:01 do primeiro dia de cada mês. Exemplo: 00:00:01 do dia 1º de novembro de 2024.

YYYY-MM

2024-11

QUARTER

YYYYQ

20241, 20242, 20243 e 20244 representam os quatro trimestres de 2024.

Às 00:00:01 do primeiro dia de cada trimestre. Exemplo: 00:00:01 do dia 1º de janeiro de 2024.

YYYY-Q

2024-1, 2024-2, 2024-3 e 2024-4 representam os quatro trimestres de 2024.

YEAR

YYYY

2023 e 2024 representam as partições dos anos 2023 e 2024.

Às 00:00:01 do primeiro dia de cada ano. Exemplo: 00:00:01 do dia 1º de janeiro de 2023.

Exemplos

O exemplo a seguir crie uma tabela particionada por dia, configurada para pré-criar partições para os próximos três dias, reter partições históricas por dois dias e usar o fuso horário Asia/Shanghai.

Using the WITH clause

  1. Crie a tabela particionada tbl1.

    -- Create a partitioned table and configure automatic partitioning.
    CREATE TABLE tbl1 (
        c1 TEXT NOT NULL,
        c2 TEXT 
    )
    PARTITION BY LIST (c2)
    WITH (
       auto_partitioning_enable = 'true',
       auto_partitioning_time_unit = 'DAY',
       auto_partitioning_time_zone = 'Asia/Shanghai',
       auto_partitioning_num_precreate = '3',
       auto_partitioning_num_retention = '2'
    );
    
  2. Insira os dados.

    INSERT INTO tbl1 (c1, c2) VALUES ('Data 1', '20231212');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 2', '20231213');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 3', '20231214');
  3. Consulte os dados.

    SELECT * FROM tbl1 WHERE c2='20231212';

    O resultado retornado é o seguinte:

    c1	     c2
    Data 1   20231212

Using the CALL command

  1. Crie a tabela particionada tbl1.

    -- Create a partitioned table and configure automatic partitioning.
    BEGIN;
    CREATE TABLE tbl1 (
        c1 TEXT NOT NULL,
        c2 TEXT 
    )
    PARTITION BY LIST (c2);
    CALL set_table_property ('tbl1', 'auto_partitioning.enable', 'true');
    CALL set_table_property ('tbl1', 'auto_partitioning.time_unit', 'DAY');
    CALL set_table_property ('tbl1', 'auto_partitioning.time_zone', 'Asia/Shanghai');
    CALL set_table_property ('tbl1', 'auto_partitioning.num_precreate', '3');
    CALL set_table_property ('tbl1', 'auto_partitioning.num_retention', '2');
    COMMIT;
  2. Insira os dados.

    INSERT INTO tbl1 (c1, c2) VALUES ('Data 1', '20231212');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 2', '20231213');
    INSERT INTO tbl1 (c1, c2) VALUES ('Data 3', '20231214');
  3. Consulte os dados.

    SELECT * FROM tbl1 WHERE c2='20231212';

    O resultado retornado é o seguinte:

    c1	     c2
    Data 1   20231212

A tabela a seguir descreve a lógica de criação e exclusão de partições.

Horário

Evento

Resultado

2023-12-12 09:00:00

Execute a instrução SQL acima para criar a tabela particionada.

  • Tabela pai criada: tbl1

  • Tabelas filhas criadas: tbl1_20231212, tbl1_20231213, tbl1_20231214

2023-12-13 00:00:00

O sistema cria automaticamente uma tabela filha.

  • Tabela filha criada: tbl1_20231215

2023-12-14 00:00:00

O sistema cria automaticamente uma tabela filha.

  • Tabela filha criada: tbl1_20231216

2023-12-15 00:00:00

O sistema cria automaticamente uma tabela filha e exclui uma antiga.

  • Tabela filha criada: tbl1_20231217

  • Tabela filha excluída: tbl1_20231212

2023-12-16 00:00:00

O sistema cria automaticamente uma tabela filha e exclui uma antiga.

  • Tabela filha criada: tbl1_20231218

  • Tabela filha excluída: tbl1_20231213

Casos de uso

Reter tabelas filhas específicas

Por padrão, o Hologres crie e exclua tabelas filhas automaticamente com base nas regras de particionamento configuradas, removendo aquelas que estão fora do intervalo de retenção. Em alguns cenários, porém, pode ser necessário preservar dados importantes — como reter dados de festivais de compras anuais para análises ano a ano em um negócio de e-commerce. Para reter tabelas filhas específicas, defina a propriedade keep_alive para elas. A sintaxe é a seguinte.

  • Sintaxe para o Hologres V2.1 e versões posteriores:

    -- Retain a child table.
    ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'true');
    -- Stop retaining a child table. After you remove this property, automatic partitioning immediately triggers a cleanup of expired data.
    ALTER TABLE [<schema_name>.]<table_name> SET (keep_alive = 'false');
    
  • Sintaxe para todas as versões:

    -- Retain a child table.
    CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'true');
    -- Stop retaining a child table. After you remove this property, automatic partitioning immediately triggers a cleanup of expired data.
    CALL set_table_property('[<schema_name>.]<table_name>', 'keep_alive', 'false');
    Nota

    Substitua table_name pelo nome da tabela filha.

Gerencie camadas de armazenamento para tabelas particionadas

No gerenciamento de tabelas particionadas, o armazenamento em camadas permite equilibrar custo e desempenho. Por exemplo, mantenha as últimas N partições históricas no armazenamento quente para consultas frequentes e armazene as M partições mais antigas no armazenamento frio para reduzir custos. Combinado com o particionamento automático, esse recurso permite defina uma política para exclua automaticamente os dados fora do período de retenção N+M.

Crie uma tabela com particionamento automático

O exemplo a seguir crie uma tabela particionada por dia. A política retém as últimas 7 partições no armazenamento quente e as 23 partições anteriores no armazenamento frio. Partições com mais de 30 dias são excluídas automaticamente.

BEGIN;
CREATE TABLE tbl2(	
  c1 text not null, 
  c2 text
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl2', 'auto_partitioning.enable', 'true');
CALL set_table_property('tbl2', 'auto_partitioning.time_unit', 'DAY');
CALL set_table_property('tbl2', 'auto_partitioning.num_precreate', '3');
CALL set_table_property('tbl2', 'auto_partitioning.num_hot', '7');
CALL set_table_property('tbl2', 'auto_partitioning.num_retention', '30');
COMMIT;

O resultado é exibido na figura a seguir.

效果

Modifique a política de armazenamento em camadas

Modifique a política de partições quentes alterando o valor do parâmetro auto_partitioning.num_hot. Observe que, ao modifique essa política, o Hologres não move automaticamente para o armazenamento quente as tabelas filhas que já estão no armazenamento frio. Suponha que a data atual seja 1º de julho de 2022 e você crie a seguinte tabela particionada.

BEGIN;
CREATE TABLE tbl_p(
  c1 text not null,
  c2 text
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl_p', 'auto_partitioning.enable', 'true');
CALL set_table_property('tbl_p', 'auto_partitioning.time_unit', 'DAY');
CALL set_table_property('tbl_p', 'auto_partitioning.num_precreate', '3');
CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '3');
CALL set_table_property('tbl_p', 'auto_partitioning.num_retention', '10');
COMMIT;

Essa configuração pode resultar em dois cenários de distribuição de dados:

  • Cenário 1: Aumentar o número de partições quentes

    Para alterar a política de partições quentes e reter quatro partições, execute o seguinte código:

    CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '4');

    Como as tabelas filhas já no armazenamento frio não são movidas automaticamente para o armazenamento quente, o efeito da alteração é ilustrado na figura a seguir.示例

  • Cenário 2: Diminuir o número de partições quentes

    Para alterar a política de partições quentes e reter apenas duas partições, execute o seguinte código:

    CALL set_table_property('tbl_p', 'auto_partitioning.num_hot', '2');

    As tabelas filhas no armazenamento frio não são movidas automaticamente para o armazenamento quente. Porém, o Hologres move para o armazenamento frio os dados que agora se qualificam para essa camada. O efeito da alteração é ilustrado na figura a seguir.示例

Converter uma tabela fria em uma tabela com particionamento automático

Para converter uma tabela particionada do armazenamento frio em uma tabela com particionamento automático e mover as partições dos últimos sete dias para o armazenamento quente, siga estas etapas.

  1. Prepare os dados.

    -- Specify the cold storage tier when you create the table.
    BEGIN;
    CREATE TABLE tbl2(	
      c1 TEXT NOT NULL, 
      c2 TEXT 
    )
    PARTITION BY LIST(c2);
    CALL set_table_property('tbl2', 'storage_mode', 'cold');
    CREATE TABLE tbl2_20230808 PARTITION OF tbl2 FOR VALUES IN('20230808');
    CREATE TABLE tbl2_20230809 PARTITION OF tbl2 FOR VALUES IN('20230809');
    CREATE TABLE tbl2_20230810 PARTITION OF tbl2 FOR VALUES IN('20230810');
    CREATE TABLE tbl2_20230817 PARTITION OF tbl2 FOR VALUES IN('20230817');
    COMMIT;
  2. Converta a tabela em uma tabela com particionamento automático e defina as partições dos últimos sete dias para o armazenamento quente.

    BEGIN;
    CALL set_table_property('tbl2', 'storage_mode', 'hot'); -- Set the parent table to hot storage.
    CALL set_table_property('tbl2_20230810', 'storage_mode', 'cold'); -- Set the child tables that do not need to be moved to hot storage to cold storage.
    CALL set_table_property('tbl2_20230809', 'storage_mode', 'cold');
    CALL set_table_property('tbl2_20230808', 'storage_mode', 'cold');
    CALL set_table_property('tbl2', 'auto_partitioning.enable', 'true');
    CALL set_table_property('tbl2', 'auto_partitioning.time_unit', 'DAY');
    CALL set_table_property('tbl2', 'auto_partitioning.num_precreate', '3');
    CALL set_table_property('tbl2', 'auto_partitioning.num_hot', '7');
    CALL set_table_property('tbl2', 'auto_partitioning.num_retention', '10');
    COMMIT;

Visualize configurações e agendamentos de particionamento automático

Para consultar as informações e configurações das tabelas com particionamento automático no banco de dados atual, execute a instrução SQL a seguir.

SELECT
    nsp_name AS schema_name,
    tbl_name AS table_name,
    ENABLE,
    time_unit,
    time_zone,
    num_precreate,
    num_retention,
    b.usename AS create_user,
    cret_time,
    schd_start_time,
    options
FROM
    hologres.hg_partitioning_config AS a
    LEFT JOIN pg_user AS b ON a.cret_user = b.usesysid;

A tabela a seguir descreve os campos do resultado da consulta.

Parâmetro

Descrição

schema_name

O nome do schema da tabela.

table_name

O nome da tabela.

ENABLE

Indica se o particionamento automático está ativado.

time_unit

A unidade de tempo do particionamento automático.

time_zone

O fuso horário do particionamento automático.

num_precreate

O número de partições pré-criadas.

num_retention

O número de partições históricas a reter.

create_user

O usuário que criou a configuração.

cret_time

O momento em que a configuração foi criada.

schd_start_time

O horário mais recente em que a tarefa de particionamento foi agendada para execução.

O bloco de código a seguir exibe um exemplo de resultado da consulta.

 schema_name |       table_name       | enable | time_unit | time_zone | num_precreate | num_retention |   create_user    |          cret_time          |     schd_start_time      | options
-------------+------------------------+--------+-----------+-----------+---------------+---------------+------------------+-----------------------------+--------------------------+---------
 public      | test_auto_part_daily      | t      | day       | PRC       |             4 |            -1 | 1534141793071340 | 2022-04-01 11:45:33+08 | 2050-01-01 00:00:00+08 | {}
 public      | test_auto_part_hourly     | t      | hour      | PRC       |             4 |            -1 | 1534141793071340 | 2022-04-01 11:44:39+08 | 2050-01-03 18:00:00+08 | {}
 public      | test_auto_part_weekly     | t      | week      | PRC       |             2 |             3 | 1534141793071340 | 2022-04-01 11:45:43+08 | 2050-01-03 00:00:00+08 | {}
 public      | test_auto_part_monthly    | t      | month     | PRC       |             1 |             0 | 1534141793071340 | 2022-04-01 11:45:55+08 | 2050-01-01 00:00:00+08 | {}
 public      | test_auto_part_quarterly  | t      | quarter   | PRC       |             2 |            -1 | 1534141793071340 | 2022-04-01 11:46:09+08 | 2050-01-01 00:00:00+08 | {}
 public      | test_auto_part_yearly     | t      | year      | PRC       |             1 |            -1 | 1534141793071340 | 2022-04-01 11:46:18+08 | 2050-01-01 00:00:00+08 | {}
(6 rows)

Visualize logs das tabelas filhas

O Query Log não registra a criação nem a limpeza de tabelas filhas. Execute a instrução SQL a seguir para consultar esses logs.

SELECT                           
    relname,
    relowner,
    schdtime,
    trigtime,
    status,
    message,
    precreate,
    discard
FROM
    hologres.hg_partitioning_log 

A tabela a seguir descreve os campos do resultado da consulta.

Parâmetro

Descrição

relname

O schema e o nome da tabela no formato schema.table.

relowner

O proprietário da tabela particionada.

schdtime

O horário agendado.

trigtime

O horário real de acionamento.

status

O status.

message

Detalhes de execução ou mensagens de erro.

precreate

Os nomes das tabelas filhas que foram criadas.

discard

Os nomes das tabelas filhas que foram removidas.

O bloco de código a seguir exibe um exemplo de resultado da consulta.

   relname   |     relowner     |        schdtime        |        trigtime        | status  | message |          precreate           |     discard
-----------+------------------+------------------------+------------------------+---------+---------+------------------------------+------------------
 public.tbl1 | 1534141793071340 | 2022-04-01 11:00:00+08 | 2022-04-01 11:24:22+08 | SUCCESS |         | {tbl1_2022032713,tbl1_2022032714} | {}
 public.tbl2 | 1534141793071340 | 2022-04-01 12:00:00+08 | 2022-04-01 12:38:31+08 | SUCCESS |         | {tbl2_2022040112}                 | {}
 public.tbl2 | 1534141793071340 | 2022-04-01 13:00:00+08 | 2022-04-01 13:00:00+08 | SUCCESS |         | {tbl2_2022040113}                 | {}
 public.tbl2 | 1534141793071340 | 2022-04-01 14:00:00+08 | 2022-04-01 14:00:00+08 | SUCCESS |         | {tbl2_2022040114}                 | {tbl2_2022040112}
(4 rows)

Perguntas frequentes

Ative o particionamento automático para tabelas existentes

Para ative o particionamento automático em uma tabela particionada existente, execute uma das instruções SQL a seguir.

-- Example for Hologres V2.1 and later
ALTER TABLE auto_part_old SET (
   auto_partitioning_enable = 'true',
   auto_partitioning_time_unit = 'HOUR',
   auto_partitioning_time_zone = 'PRC',
   auto_partitioning_num_precreate = '4',
   auto_partitioning_num_retention = '-1',
   auto_partitioning_num_hot = '-1'
);
-- Example for all Hologres versions
BEGIN;
CALL set_table_property('auto_part_old', 'auto_partitioning.enable', 'true');
CALL set_table_property('auto_part_old', 'auto_partitioning.time_unit', 'HOUR');
CALL set_table_property('auto_part_old', 'auto_partitioning.time_zone', 'PRC');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_precreate', '4');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_retention', '-1');
CALL set_table_property('auto_part_old', 'auto_partitioning.num_hot', '-1');
COMMIT;
Importante

As propriedades auto_partitioning.time_unit e auto_partitioning.time_zone são configurações essenciais do particionamento automático. Uma vez definidas, essas propriedades não podem ser alteradas.

Limpeza automática de tabelas filhas existentes

O sistema determina se deve exclua uma tabela filha com base no nome dela. Se o nome corresponder à convenção de nomenclatura {parent_table}_{time_suffix}, a tabela estará sujeita à limpeza. Caso contrário, não será afetada.

Criação com atraso das tabelas filhas de **num_precreate**

Ao ative o particionamento automático em uma tabela pela primeira vez, a tarefa de criação não é executada imediatamente. Por padrão, o sistema verifica partições a criar a cada 10 minutos. Portanto, as tabelas filhas são criadas dentro dessa janela de 10 minutos.