Reorganizar e Gerenciar Partições
Nesta etapa, aprenderemos como modificar a estrutura de partição de uma tabela existente usando a instrução ALTER TABLE. Isso é útil para adaptar seu esquema de particionamento à medida que seus dados crescem ou suas necessidades mudam.
Lembrete: Você ainda deve estar no shell do MySQL e usando o banco de dados sales_data. Se não estiver, use:
USE sales_data;
Digamos que queremos adicionar uma nova partição para o ano de 2024. Atualmente, os dados de 2024 em diante estão na partição pFuture. Você não pode adicionar uma nova partição com ADD PARTITION porque a partição pFuture é definida com VALUES LESS THAN MAXVALUE, que deve ser sempre a última partição.
Em vez disso, precisamos REORGANIZE a partição pFuture para dividi-la. Dividiremos pFuture em duas novas partições: uma para o ano de 2024 (p2024) e uma nova partição pFuture para tudo depois disso.
ALTER TABLE sales REORGANIZE PARTITION pFuture INTO (
PARTITION p2024 VALUES LESS THAN (2025),
PARTITION pFuture VALUES LESS THAN MAXVALUE
);
Este comando pega a partição pFuture existente, move quaisquer dados de 2024 para a nova partição p2024 e redefine pFuture para cobrir datas a partir de 2025. A linha com sale_date '2024-01-01' será movida para p2024.
Vamos verificar a estrutura de partição atualizada e as contagens de linhas:
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
Você deverá ver a nova partição p2024. A linha de 2024 agora está em p2024.
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020 | 0 |
| p2021 | 2 |
| p2022 | 2 |
| p2023 | 2 |
| p2024 | 0 |
| pFuture | 0 |
+----------------+------------+
Agora, vamos demonstrar a fusão de partições. Suponha que queremos combinar as partições p2020 e p2021 em uma única partição chamada p2020_2021.
ALTER TABLE sales REORGANIZE PARTITION p2020, p2021 INTO (
PARTITION p2020_2021 VALUES LESS THAN (2022)
);
Este comando mescla os dados de p2020 e p2021 em uma nova partição chamada p2020_2021. A cláusula VALUES LESS THAN (2022) define o novo limite para esta partição mesclada.
Verifique a estrutura de partição novamente:
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
Você verá que p2020 e p2021 desapareceram, e p2020_2021 existe com a contagem de linhas combinada.
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020_2021 | 3 |
| p2022 | 2 |
| p2023 | 2 |
| p2024 | 0 |
| pFuture | 0 |
+----------------+------------+
Finalmente, vamos remover uma partição. Podemos remover a partição p2024. Observe que isso também excluirá todos os dados dentro dessa partição.
ALTER TABLE sales DROP PARTITION p2024;
Verifique a estrutura de partição uma última vez:
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
A partição p2024 não deve mais ser listada.
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020_2021 | 3 |
| p2022 | 2 |
| p2023 | 2 |
| pFuture | 0 |
+----------------+------------+
Você reorganizou, mesclou e removeu partições com sucesso usando ALTER TABLE. Isso demonstra a flexibilidade no gerenciamento de tabelas particionadas à medida que seus dados evoluem.