Reorganizar particiones con ALTER TABLE
En este paso, aprenderemos cómo reorganizar particiones utilizando la declaración ALTER TABLE
en MySQL. Reorganizar particiones puede ser útil por diversas razones, como fusionar particiones, dividir particiones o agregar nuevas particiones.
Primero, asegúrate de estar conectado al servidor de MySQL y utilizando la base de datos sales_data
. Si cerraste la conexión en el paso anterior, vuelve a conectarte utilizando:
mysql -u root -p
Ingresa la contraseña de root si se te solicita. Luego, selecciona la base de datos sales_data
:
USE sales_data;
Comencemos agregando una nueva partición para el año 2024. Actualmente, todos los datos de ventas a partir de 2024 se almacenan en la partición pFuture
. Podemos crear una partición específica para 2024 utilizando la declaración ALTER TABLE
con la cláusula ADD PARTITION
:
ALTER TABLE sales ADD PARTITION (PARTITION p2024 VALUES LESS THAN (2025));
Esta declaración agrega una nueva partición llamada p2024
que contendrá todas las filas donde el año de sale_date
sea menor a 2025 (es decir, el año 2024). Después de agregar la partición, necesitamos reorganizar la partición pFuture
para excluir el año 2024.
ALTER TABLE sales REORGANIZE PARTITION pFuture INTO (
PARTITION p2025 VALUES LESS THAN (2026),
PARTITION pFuture VALUES LESS THAN MAXVALUE
);
Este comando divide la partición pFuture
en p2025
y una nueva partición pFuture
. p2025
contendrá los datos del año 2025, y la nueva pFuture
contendrá los datos a partir de 2026.
Ahora, verifiquemos la estructura de las particiones:
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
Deberías ver las nuevas particiones p2024
, p2025
y la actualizada pFuture
en la salida.
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| p2020 | 1 |
| p2021 | 2 |
| p2022 | 2 |
| p2023 | 2 |
| p2024 | 1 |
| p2025 | 0 |
| pFuture | 0 |
+----------------+------------+
A continuación, veamos cómo fusionar particiones. Supongamos que queremos fusionar las particiones p2020
y p2021
en una sola partición llamada p2020_2021
. Podemos hacer esto utilizando la declaración ALTER TABLE
con la cláusula REORGANIZE PARTITION
:
ALTER TABLE sales REORGANIZE PARTITION p2020, p2021 INTO (
PARTITION p2020_2021 VALUES LESS THAN (2022)
);
Esta declaración fusiona las particiones p2020
y p2021
en una nueva partición llamada p2020_2021
. La cláusula VALUES LESS THAN (2022)
especifica que esta partición contendrá todas las filas donde el año de sale_date
sea menor a 2022.
Ahora, verifiquemos nuevamente la estructura de las particiones:
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
Deberías ver que las particiones p2020
y p2021
han sido reemplazadas por la partición p2020_2021
.
+------------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+------------------+------------+
| p2020_2021 | 3 |
| p2022 | 2 |
| p2023 | 2 |
| p2024 | 1 |
| p2025 | 0 |
| pFuture | 0 |
+------------------+------------+
Finalmente, veamos cómo eliminar una partición. Supongamos que queremos eliminar la partición p2025
. Podemos hacer esto utilizando la declaración ALTER TABLE
con la cláusula DROP PARTITION
:
ALTER TABLE sales DROP PARTITION p2025;
Ahora, verifiquemos la estructura de las particiones por última vez:
SELECT
PARTITION_NAME,
TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS
WHERE
TABLE_SCHEMA = 'sales_data' AND TABLE_NAME = 'sales';
Deberías ver que la partición p2025
ha sido eliminada.
+------------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+------------------+------------+
| p2020_2021 | 3 |
| p2022 | 2 |
| p2023 | 2 |
| p2024 | 1 |
| pFuture | 0 |
+------------------+------------+
Al utilizar la declaración ALTER TABLE
con diversas cláusulas, puedes reorganizar fácilmente tus particiones para satisfacer tus cambiantes necesidades de gestión de datos.