Uso de la tabla de particiones Dameng

En aplicaciones empresariales a gran escala o aplicaciones de bases de datos de nivel empresarial, la cantidad de datos a procesar generalmente alcanza niveles de TB. Cuando se realizan escaneos completos de tablas u operaciones DML en tablas tan grandes, la eficiencia es muy baja.

Para mejorar la eficiencia de la base de datos al leer, escribir y consultar grandes cantidades de datos, Dameng Database proporciona la tecnología de partición de tablas e índices, dividiendo los datos en objetos de la base de datos, como tablas e índices, en pequeñas unidades y almacenándolas en una. En un segmento separado, el acceso de los usuarios a la tabla se convierte en acceso a segmentos más pequeños para mejorar el rendimiento de los sistemas de aplicaciones grandes.

La tabla de particiones de la base de datos de Dameng incluye principalmente tres métodos: partición de rango, partición de hash y partición de lista. Las empresas pueden utilizar métodos de partición adecuados, como fecha (rango) y región (lista), para particionar grandes cantidades de datos. Dado que las particiones divididas por la base de datos Dameng son independientes entre sí y se pueden almacenar en diferentes medios de almacenamiento, puede satisfacer plenamente los requisitos de las empresas en cuanto a alta disponibilidad, E/S equilibrada, costos de mantenimiento reducidos y rendimiento de consultas mejorado. Hoy hablamos principalmente de particiones horizontales. 

1. Crea una tabla de particiones

1. Cree una tabla de partición de rango

create table r_t1 (pid int primary key ,id int)
partition by range (pid)
(partition p1 values less than (101),
partition p2 values less than (201));

Ingrese el valor del 1 al 200 en t_r1.

begin
for i in 1..200 loop
insert into r_t1 values (i,i+1);
end loop;
end;

Verifique el tipo de tabla r_t1, que se muestra como una tabla particionada.

select table_name,PARTITIONED from dba_tables where table_name='R_T1';

Vea las particiones en la tabla de particiones, que se muestran como dos particiones, p1 y p2.

select table_name,partition_name from dba_tab_partitions where table_name='R_T1';

Consultar el número de registros en una tabla particionada.

SQL> select count(*) from r_t1 partition (p1);

Se crea dicha partición de rango.

2. Crear particiones de lista

create table l_t1 (id int,name varchar(20))
partition by list (name)
(partition p1 values  ('湖北'),
partition p2 values  ('湖南'),
partition p3 values  ('安徽'));

Vea las particiones de la tabla de particiones, que se muestran como tres particiones p1, p2 y p3.

SQL>select table_name,partition_name from dba_tab_partitions where table_name='L_T1';

3. Crea una partición hash

SQL>CREATE TABLE sales01(sales_id INT, saleman CHAR(20),
saledate DATETIME, city  CHAR(10))
PARTITION BY HASH(city)
(PARTITION p1,
PARTITION p2,
PARTITION p3,
PARTITION p4 );

Si no necesita especificar un nombre de tabla de particiones, puede crear una tabla de particiones hash especificando el número de particiones hash.

SQL>CREATE TABLE sales02(sales_id int, saleman char(20),
saledate DATETIME, city  CHAR(10)) PARTITION BYHASH(city)
PARTITIONS 4;

El número después de PARTICIONES indica el número de particiones de la partición hash. La cláusula STORE IN especifica el espacio de tabla utilizado por la partición hash en secuencia. El nombre de la partición de la tabla de particiones hash creada de esta manera es anónimo. DM7 usa uniformemente DMHASHPART + número de partición (comenzando desde 0) como nombre de partición. Por ejemplo, si necesita consultar los datos de la primera partición de sales02, puede ejecutar la siguiente declaración:

SQL>SELECT* FROM sales02 PARTITION (DMHASHPART1);

2. Agregar particiones

SQL> alter table r_t1 add partition p3 values less than(301);

 Verifique la cantidad de particiones y podrá ver que se ha agregado una nueva partición p3.

3. Eliminar partición

SQL> alter table r_t1 drop partition p3;

Se puede ver que la partición P3 recién agregada se ha eliminado.

4. Fusionar particiones

Sql> alter table r_t1 merge partitions p1,p2 into partition p1_2;

5. Dividir particiones

SQL> alter table r_t1 split partition p1_2 at (100) into (partition p1,partition p2);

6. Limitaciones de las tablas de partición horizontales

1. El tipo de columna de partición debe ser numérico, de caracteres o de fecha. BLOB, CLOB, IMAGE, TEXT, LONGVARCHAR, BIT, BINARY, VARBINARY, LONGVARBINARY, los tipos de intervalo de tiempo y los tipos definidos por el usuario no se admiten como columnas de partición.

2. Las claves de partición de la partición de rango y la partición hash pueden ser múltiples, hasta 16 columnas; la clave de partición de la partición LIST debe ser única.

3. Al especificar la clave principal y las restricciones únicas para una tabla particionada horizontalmente, la clave de partición debe incluirse en la clave principal y las restricciones únicas.

4. Las tablas con particiones horizontales no admiten tablas temporales.

5. No se pueden establecer restricciones autorreferenciales en tablas divididas horizontalmente.

6. En un entorno normal, el límite superior del número total de particiones en todos los niveles de la tabla de particiones horizontales es 65535; en un entorno MPP, el límite superior del número total de particiones en todos los niveles de la tabla de particiones horizontales depende en el parámetro INI MAX_EP_SITES y el límite superior es 2 ^(16 - log2MAX_EP_SITES). Por ejemplo: cuando MAX_EP_SITES es el valor predeterminado de 64, el límite superior del número total de particiones es 1024.

7. No se permiten operaciones DDL en subtablas particionadas.

8. La partición hash admite operaciones de modificación, como cambiar el nombre, eliminar restricciones y establecer si los activadores están habilitados.

9. La partición por rango admite la fusión, división, adición, eliminación, intercambio, cambio de nombre, eliminación de restricciones y configuración de los activadores.

10. La partición LIST admite operaciones como agregar, eliminar, intercambiar, cambiar el nombre, eliminar restricciones y configurar activadores para que surtan efecto.

11. El valor del rango de partición LIST no puede ser NULL.

Supongo que te gusta

Origin blog.csdn.net/qq_35273918/article/details/130820326
Recomendado
Clasificación