Red de conocimiento informático - Material del sitio web - Cómo mejorar la eficiencia de las actualizaciones de tablas de big data de Oracle

Cómo mejorar la eficiencia de las actualizaciones de tablas de big data de Oracle

Si los datos de la tabla en ORACLE son muy grandes (nivel M o superior), la actualización de un campo es muy lenta (por ejemplo, actualizar la tabla de procesos comerciales históricos en mi proyecto HIS, 654,3806 millones de registros, usando un cursor).

Si hay una gran cantidad de datos de tabla en Oracle (nivel M o superior), la actualización de un campo es muy lenta (por ejemplo, en mi proyecto HIS, se actualizaron 16.000 registros usando CURSOR y 1 se actualizó). enviado a la vez. , 000 registros, pero tomó 4 días completar la actualización). Las mejoras que probé más tarde son las siguientes:

1. Cancelar el registro en la tabla.

2. Cancelar el índice en la tabla

Pero todavía era lento, así que encontré esto:

p = 100:11:0::: : p 11 _ QUESTION _ ID: 6407993912330

En esta sesión de preguntas y respuestas, los funcionarios de ORA propusieron una solución:

1 Generar una nueva tabla T1 creando la tabla como select xxxxx.

2. Cree el mismo índice en T1 que la tabla de destino.

3. Elimine o cambie el nombre de la tabla de destino (preste atención a la copia de seguridad para evitar arrepentimientos)

4. Cambie el nombre de T1 a la tabla de destino.

Lo probé y fue muy rápido. Mi tarea se completó en dos minutos.

Si csywdk.table_room es una tabla grande, el registro de bakfwid en noNewYWFW20081205 debe eliminarse y el ROOM_LOC de bakfwid en imp_table_room debe actualizarse a imp_table_room.room_loc:

(1) Crear una nueva tabla

p>

Crear tabla tmp_new_table_room081205 como

Seleccione t1. ID de habitación, t1. NUEVAROOMID,t1. CONSTRUIDO,t1. TFH,t1. DKH,t1. Número de compilación, t1. Número de capa, t1. Número de habitación, t1. nombre_habitación,

decode(t2.bakfwid, null, t1. ubicación_habitación, t2. ubicación_habitación)

t1. área_habitación,

t1. SOBRETIPO,t1. Nombre de capa, t1. DEVDEP,t1. Celda, t1. DELFLAG,t1. QXXZ,t1. SJSJLSH,t1. FD,t1. ID,t1. BAKFWID

Unirse a la izquierda desde csywdk.table_room t1 imp _ table _ room T2 en t 1 . , donde t3.bakfwid=t1.bakfwid)

(2) Crear una tabla de respaldo

Crear tabla Table_room081205 como

seleccionar * de csywdk.table_room p>

(3) Reemplazar la tabla original

Eliminar tabla sde.table_room

Crear tabla sde.table_room como

seleccionar * de tmp _ new _ table _ room 081205

En estas preguntas y respuestas, también mencioné una oración relacionada con la eficiencia de ORA PL/SQL:

Las tareas que se pueden manejar en una oración nunca deben usarse programación multioración para lograr esto.

Resulta que siempre tuve miedo de que el segmento de reversión no fuera lo suficientemente grande al ejecutar, por lo que parecía que la mejor manera era preparar el disco duro.

,