O PolarDB-X oferece um conjunto fixo de funções de particionamento para bancos de dados no modo de particionamento automático. Somente as funções listadas neste tópico são compatíveis com expressões de particionamento.
Conceitos principais
Chave de partição: uma ou mais colunas usadas para particionar horizontalmente uma tabela.
Coluna da chave de partição: coluna individual que compõe uma chave de partição. Uma chave de partição consiste em uma ou mais colunas desse tipo.
Chave de partição de coluna única: chave de partição composta por exatamente uma coluna. Exemplo: c1 em PARTITION BY HASH(c1).
Chave de partição vetorial: chave de partição formada por uma ou mais colunas. Exemplo: (c1,c2,c3) em PARTITION BY HASH(c1,c2,c3).
Função de particionamento: função aplicada às colunas da chave de partição que retorna um valor usado pelo PolarDB-X para direcionar linhas à partição correta. Exemplo: PARTITION BY HASH(TO_DAYS(c1)).
Monotonicidade: relação entre a variação do valor de entrada x e a saída de func(x). A monotonicidade determina se o PolarDB-X pode aplicar pruning de partições em consultas por intervalo.
|
Tipo de monotonicidade |
Definição |
Pruning de partições em consultas por intervalo |
|
Monotonicidade estrita |
Se |
Compatível |
|
Monotonicidade não estrita |
Se |
Compatível |
|
Sem monotonicidade |
Quando |
Não compatível |
Funções sem monotonicidade (como MONTH, DAYOFWEEK, DAYOFMONTH, DAYOFYEAR, SUBSTR/SUBSTRING, RIGHT e LEFT) não permitem pruning de partições em consultas por intervalo. Consultas com predicados de intervalo em partições baseadas nessas funções percorrem todas as partições.
Propriedades das funções
A tabela a seguir lista todas as funções de particionamento compatíveis, a versão mínima do PolarDB-X necessária, o tipo de monotonicidade e os tipos de dados de coluna aceitos.
Notas de rodapé para a coluna Supported data types:
Tipos inteiros: BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, TINYINT UNSIGNED
Tipos de data e hora: DATE, DATETIME, TIMESTAMP
Tipos string: CHAR, VARCHAR
|
Função |
Descrição |
Versão mínima |
Monotonicidade |
Tipos inteiros |
Tipos de data e hora |
Tipos string |
|
YEAR(date) |
Retorna o ano da data de entrada. Consulte YEAR(date) na documentação do MySQL. |
5.4.13 |
Não estrita |
- |
Sim |
- |
|
MONTH(date) |
Retorna o mês da data de entrada. Consulte MONTH(date) na documentação do MySQL. |
5.4.13 |
Nenhuma |
- |
Sim |
- |
|
TO_DAYS(date) |
Retorna o número de dias desde 1º de janeiro de 0000 até a data de entrada. Consulte TO_DAYS(date) na documentação do MySQL. |
5.4.13 |
Não estrita |
- |
Sim |
- |
|
TO_MONTHS(date) |
Retorna o número de meses desde 1º de janeiro de 0000 até a data de entrada. Esta é uma função específica do PolarDB-X. |
5.4.16-16717637 |
Não estrita |
- |
Sim |
- |
|
TO_WEEKS(date) |
Retorna o número de semanas desde 1º de janeiro de 0000 até a data de entrada. Esta é uma função específica do PolarDB-X. |
5.4.16-16717637 |
Não estrita |
- |
Sim |
- |
|
TO_SECONDS(expr) |
Retorna o número de segundos desde 1º de janeiro de 0000, 00:00:00, até o horário de entrada. Consulte TO_SECONDS(expr) na documentação do MySQL. |
5.4.13 |
Não estrita |
- |
Sim |
- |
|
UNIX_TIMESTAMP([date]) |
Retorna o número de segundos desde 1º de janeiro de 1970, 00:00:00 UTC, até o horário de entrada. Consulte [UNIX_TIMESTAMP([date])](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_unix-timestamp) na documentação do MySQL. |
5.4.13 |
Não estrita |
- |
Sim |
- |
|
DAYOFWEEK(date) |
Retorna o dia da semana como um inteiro (1 = domingo, 2 = segunda-feira, ..., 7 = sábado). Consulte DAYOFWEEK(date) na documentação do MySQL. |
5.4.16-16717637 |
Nenhuma |
- |
Sim |
- |
|
DAYOFMONTH(date) |
Retorna o dia do mês como um inteiro (1-31). Consulte DAYOFMONTH(date) na documentação do MySQL. |
5.4.16-16717637 |
Nenhuma |
- |
Sim |
- |
|
DAYOFYEAR(date) |
Retorna o dia do ano como um inteiro (1-366). Consulte DAYOFYEAR(date) na documentação do MySQL. |
5.4.16-16717637 |
Nenhuma |
- |
Sim |
- |
|
SUBSTR/SUBSTRING |
Retorna uma substring da string de entrada. Consulte SUBSTRING() na documentação do MySQL. |
5.4.16-16717637 |
Nenhuma |
- |
- |
Sim |
|
RIGHT(str, len) |
Retorna os |
5.4.18-17034692 |
Nenhuma |
- |
- |
Sim |
|
LEFT(str, len) |
Retorna os |
5.4.18-17034692 |
Nenhuma |
- |
- |
Sim |
Suporte a políticas de particionamento
A tabela a seguir mostra quais políticas de particionamento cada função aceita.
Todas as funções são compatíveis com HASH (coluna única), RANGE (coluna única) e LIST (coluna única). Nenhuma função aceita KEY, HASH (vetorial), RANGE COLUMNS, LIST COLUMNS ou LIST (vetorial). O suporte a CO_HASH restringe-se às funções de string.
|
Função |
KEY |
HASH (coluna única) |
HASH (vetorial) |
RANGE (coluna única) |
RANGE (vetorial) |
RANGE COLUMNS |
LIST (coluna única) |
LIST (vetorial) |
LIST COLUMNS |
CO_HASH |
|
YEAR |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
MONTH |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
TO_DAYS |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
TO_MONTHS |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
TO_WEEKS |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
TO_SECONDS |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
UNIX_TIMESTAMP |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
DAYOFWEEK |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
DAYOFMONTH |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
DAYOFYEAR |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Não |
|
SUBSTR/SUBSTRING |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Sim |
|
RIGHT |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Sim |
|
LEFT |
Não |
Sim |
Não |
Sim |
Não |
Não |
Sim |
Não |
Não |
Sim |