Puede crear una tabla con particiones híbridas para acceder a datos almacenados en distintos motores de almacenamiento.
El siguiente diagrama ilustra el funcionamiento de las particiones híbridas.
Las particiones híbridas separan los datos calientes de los fríos al almacenar las particiones de una tabla en diferentes medios de almacenamiento. Esto reduce los costos de almacenamiento de los datos fríos sin afectar el rendimiento de las consultas ni las operaciones DML sobre los datos calientes.
Para archivar una tabla particionada como hybrid partitioned table, se deben cumplir las siguientes condiciones:
MySQL 8.0.2 con versión menor 8.0.2.2.34.1 o posterior. Debe set el parámetro
loose_polar_allow_create_hybrid_partitionenON.MySQL 8.0.2 con versión menor anterior a 8.0.2.2.34.1. Actualice a una versión menor más reciente.
Requisitos previos
Su clúster debe ejecutar PolarDB for MySQL 8.0.2 con versión de revisión 8.0.2.2.34.1 o posterior. Puede view the version number para comprobar la versión de su clúster.
-
Los archivos de datos de las particiones que desea crear ya deben existir en OSS y sus nombres deben seguir estas reglas:
Las extensiones de archivo y los marcadores de partición deben estar en mayúsculas.
Los nombres de tablas y particiones deben coincidir con los de la base de datos.
Por ejemplo, si la partición
p1de la tablat1utiliza el motor CSV, el archivo de datos de la partición se nombrat1#P#p1.CSV. Las tablas particionadas archivadas mediante el archivado de datos fríos pueden archivarse como tablas con particiones híbridas.
Limitaciones
Una tabla con particiones híbridas debe contener como mínimo una partición que utilice el motor de almacenamiento InnoDB. El motor a nivel de tabla debe ser InnoDB.
Al crear una tabla con particiones híbridas que incluya subparticiones, el motor de la partición de primer nivel debe coincidir con el motor de la tabla, y como mínimo una subpartición debe utilizar el motor de almacenamiento InnoDB.
Las tablas con particiones híbridas solo admiten los tipos de partición
RANGEyLIST.No se admiten operaciones DML (incluidas
INSERT,UPDATE,DELETEoLOAD) en particiones OSS dentro de tablas con particiones híbridas.
Parámetros
Cuando utilice tablas con particiones híbridas, puede configure los siguientes parámetros en la página Parameters de su clúster de PolarDB según sus requisitos empresariales.
Parámetro | Nivel | Descripción |
| Global | Especifica la regla para consultar tablas con particiones híbridas. Valores válidos:
|
| Global | Controla la función de archivado automático de datos fríos (DLM). Valores válidos:
Nota
|
| Global | Controla si se permite crear o archivar tablas particionadas que contienen particiones con motores distintos a InnoDB. Valores válidos:
Nota
|
| Global / Sesión | Controla si la gestión de metadatos (meta) de OSS está habilitada para tablas OSS. El parámetro
|
| Global / Sesión | Controla si el filtrado a nivel de archivo (File Filter) está habilitado al consultar tablas OSS. Esta función utiliza estadísticas mín/máx y filtros Bloom para omitir archivos de datos irrelevantes y reducir la cantidad de datos de OSS escaneados. Esta función requiere que el parámetro
|
| Global / Sesión | Controla la poda automática de particiones OSS archivadas mediante la función Data Lifecycle Management (DLM). Cuando se ejecutan operaciones DML (UPDATE/DELETE), el sistema poda automáticamente las particiones que se están archivando a OSS (ORC/CSV) y las particiones que ya han sido archivadas a OSS. Esto evita que las operaciones DML se bloqueen debido al archivado y resuelve conflictos entre DML y DDL. Valores válidos:
|
| Global / Sesión | Controla la poda automática de consultas. Cuando se ejecuta una consulta SELECT, el sistema poda automáticamente las particiones OSS (ORC/CSV) para evitar consultas lentas causadas por el acceso a datos fríos. Valores válidos:
|
Crear una partición híbrida
Para crear una tabla con particiones híbridas, necesita un servidor OSS. Si no cuenta con uno, utilice la siguiente sintaxis para crearlo:
CREATE SERVER oss_server_name
FOREIGN DATA WRAPPER oss
OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
"oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
"oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');
Si la versión del clúster es PolarDB for MySQL 8.0.2 y la versión de revisión es 8.0.2.2.6 o posterior, se admite el parámetro my_oss_sts_token.
La siguiente tabla describe los parámetros.
Parámetro | Tipo | Descripción |
oss_server_name | string | El nombre del servidor OSS. Nota Este parámetro es global y debe ser único. El nombre no distingue entre mayúsculas y minúsculas, y puede tener hasta 64 caracteres. Los nombres que superen los 64 caracteres se truncan. Puede especificar el nombre del servidor OSS como una cadena entre comillas. |
my_oss_endpoint | string | El endpoint de la región de OSS. Nota Si accede a la base de datos desde un host de Alibaba Cloud, utilice un endpoint interno para evitar generar tráfico de internet. Un endpoint interno generalmente contiene la palabra "internal". |
my_oss_bucket | string | El bucket de OSS que contiene los archivos de datos. Este bucket ya debe existir en OSS. |
my_oss_access_key_id | string | El AccessKey ID para acceder a OSS. |
my_oss_access_key_secret | string | El AccessKey Secret para acceder a OSS. |
my_oss_prefix | string | El prefijo de ruta para los archivos de datos en OSS. Este valor no puede estar vacío ni contener caracteres especiales. |
my_oss_sts_token | string | Credenciales de acceso temporal de OSS. Para obtener más información sobre cómo conseguir credenciales de acceso temporal de OSS, consulte Obtain temporary access credentials. Nota El valor del parámetro |
El siguiente ejemplo muestra cómo crear una tabla con particiones híbridas:
CREATE TABLE t2(a1 INT, a2 VARCHAR(30), a3 VARCHAR(256))
CONNECTION = "oss_server_name"
PARTITION BY RANGE(a1)
(
PARTITION p1 values less than (1000) ENGINE = CSV,
PARTITION p2 values less than (2000) ENGINE = CSV,
PARTITION p3 values less than (3000) ENGINE = INNODB
);
Consultar una partición híbrida
Puede consultar particiones en diferentes motores de almacenamiento de tres maneras:
-
Establezca el parámetro
hybrid_partition_query_mix_engine_enableden ON. Las consultas devolverán datos de particiones InnoDB, X-Engine y OSS. Ejemplo:-- t1 is a hybrid partitioned table. SELECT * FROM t1; -
Establezca el parámetro
hybrid_partition_query_mix_engine_enableden OFF. Las consultas devolverán datos solo de particiones InnoDB y X-Engine. Ejemplo:-- t1 is a hybrid partitioned table. SELECT * FROM t1; -
Consulte una partición específica por nombre. Esto recupera datos de la partición especificada, independientemente de su motor de almacenamiento. Ejemplo:
-- t1 is a hybrid partitioned table, and p1 is the name of the partition to query. SELECT * FROM t1 partition (p1);