Asignar Claves de Producción
Durante el paso de asignación de claves, el sistema asigna una nueva clave para cada clave tradicional para una tabla cuya clave principal requiere una clave aleatoria generada por el sistema. El proceso de conversión asigna nuevas claves primarias para aprovechar el procesamiento paralelo del sistema y las técnicas de agrupamiento de datos en el sistema de producción (estas técnicas dependen de claves agrupadas asignadas de manera aleatoria).
En los temas de esta sección, se proporciona un análisis de nivel superior sobre el proceso de asignación de claves y se describen los procesos de segundo plano usados para asignar claves de producción a los datos de ubicación intermedia.
Tabla de clave anterior/clave nueva
Es importante comprender que el sistema no sobrescribe las claves primarias de las filas en la base de datos de ubicación intermedia, debido a que ésta es una transacción de IO muy cara. En lugar de eso, existe una serie de tablas que retienen la clave anterior de cada fila y la clave nueva que se le asignará cuando la fila se transfiera a la base de datos de producción. Estas tablas se llaman tablas de "clave anterior/clave nueva".
La convención "<1st letter of owner flag>K_<table_name>" se usa para indicar el nombre de la tabla de clave anterior/clave nueva. Por ejemplo, la tabla de clave anterior/clave nueva para CI_ACCT se llama CK_ACCT.
El proceso de lote de inserción que transfiere las filas a la base de datos de producción usa la nueva clave para el registro principal de la clave junto con cualquier otro registro donde esta clave es una clave foránea. De la misma manera, el proceso de resolución XML resuelve la conversión de claves foráneas que residen en campos de almacenamiento XML y las reemplaza por sus correspondientes claves nuevas desde esa tabla.
Un Proceso de Lote por Tabla
Se proporciona un proceso de lote de asignación de claves para cada tabla que tiene una clave generada por el sistema y pertenece a un objeto de mantenimiento elegible para conversión. El proceso de lote es responsable de completar la tabla correspondiente de clave anterior/clave nueva (por ejemplo, no tiene que completar estas tablas). Estos procesos son de subproceso único. Para obtener más información, consulte el proceso de lote de asignación de claves correspondiente de una tabla.
Dependencias de Asignación de Claves
La mayoría de las tablas con claves generadas por el sistema no heredan parte de su clave de la clave de otra tabla. El proceso de lote de asignación de claves correspondiente no tiene dependencias y, por lo tanto, se puede ejecutar en cualquier orden que desee.
Algunas tablas heredan parte de su clave de la clave de otra tabla. Los procesos de lote de asignación de claves de dichas tablas se deben ejecutar en el orden en que se heredan las claves. En otras palabras, el proceso de asignación de claves para una tabla se debe ejecutar después del proceso que genera claves para la entidad de la que depende. El portal de Panel de Control de Entidad de Conversión despliega información de dependencia de herencia de claves (si existe) para una entidad de conversión.
Puede ejecutar varios procesos de lote de asignación de claves en paralelo, siempre que sean independientes con respecto a la herencia de clave.
Conversiones Iterativas
En lugar de realizar una conversión "en grande" (donde se completan todos los registros de una entidad a la vez), algunas implementaciones tienen la oportunidad de realizarse en subjuegos de su base de entidades. Si esto describe su implementación, tenga en mente que el sistema toma en cuenta las claves primarias existentes en la base de datos de producción antes de que asigne un valor de clave nuevo. Esto significa que cuando convierta el siguiente subjuego de clientes, podrá estar seguro de obtener claves limpias y únicas.
La lógica de asignación de claves crea los valores iniciales de las claves manipulando el número secuencial de fila, que comienza a partir del 1. Después de cualquier ejecución de conversión, se iniciará una ejecución de conversión subsiguiente con ese número de fila nuevamente en 1 y la posibilidad de que se asignen claves duplicadas será mayor. El proceso de lote de asignación de claves le permite especificar un valor inicial para ese número de fila. El propósito de este parámetro es aumentar el valor del número de fila por el valor dado y minimizar la posibilidad de asignación de claves duplicadas. Este parámetro solo se usa si está realizando conversiones donde ya existen datos en las tablas de la base de datos de producción.
Tipo de Ejecución
La asignación de claves se realiza en dos pasos:
- Generación Inicial de Claves. El sistema asigna nuevas claves a las filas de las tablas intermedias (es decir, completa la tabla respectiva con la clave anterior/clave nueva).
- Resolución de Claves Duplicadas. El sistema reasigna claves que son duplicados en comparación con la producción.
Por defecto, los dos pasos se realizan en la misma ejecución, pero tiene la opción de ejecutarlos por separado indicando qué paso ejecutar mediante un parámetro de lote. El uso adecuado de este parámetro acelerará considerablemente el paso de asignación de claves descrito en la sección Recomendaciones para Acelerar la Generación de Claves.
Recomendaciones para Acelerar la Generación de Claves
Los siguientes puntos describen maneras de acelerar la ejecución de los programas de generación de claves.
- Para una instalación no en la nube:
- Aumente el tamaño de los segmentos de reversión. El tamaño exacto depende del número de filas que intervienen en la conversión. Nuestra investigación ha mostrado que procesar 7 millones de filas genera aproximadamente 3 GB de información de reversión.
- Configure el o los segmentos de reversión en aproximadamente 10 GB con extensión automática a un tamaño máximo de 20 GB para determinar la marca de agua superior.
- Se debe usar un valor de alcance siguiente del orden de los 100M.
- Asegúrese de desactivar todos los pequeños segmentos de reversión (de lo contrario, Oracle los usará en lugar de los segmentos de reversión grandes anteriormente descritos).
- Una vez que se ejecutan los programas de asignación de claves, puede recuperar el espacio al:
- Mantener un valor bajo para el parámetro "alcance mínimo" de la reversión.
- Mermar los segmentos de reversión y los archivos de datos subyacentes al final de los grandes trabajos en lote.
- Aumente el tamaño de los segmentos de reversión. El tamaño exacto depende del número de filas que intervienen en la conversión. Nuestra investigación ha mostrado que procesar 7 millones de filas genera aproximadamente 3 GB de información de reversión.
- Calcule las estadísticas de las tablas de clave anterior/clave nueva después de cada aumento en 50 % del tamaño de la tabla. La generación de claves se realiza en niveles o pasos debido a la dependencia de herencia entre algunas tablas y sus claves. A pesar de que la generación de claves para el nivel de dependencia de herencia que se procesa actualmente se realiza por medio de SQL basado en juegos, el cómputo de las estadísticas entre los niveles permitirá a la base de datos calcular la ruta de acceso óptima a las claves que se están heredando de la ejecución de generación del nivel anterior.
- Uso óptimo del parámetro de lote Tipo de Ejecución.
- Antes de cualquier asignación de claves, altere el índice F1_CX_ID de la "clave anterior" y el índice CI_ID de la "clave nueva" en las tablas de clave anterior/clave nueva para que no sean utilizables.
- Ejecute todos los procesos de lote de asignación de claves en niveles, ejecutando cada tarea para que solo realice el paso Generación de Clave Inicial.
- Vuelva a crear los índices en las tablas de clave anterior/clave nueva. Volver a crear los índices con los parámetros PARALLEL y NOLOGGING acelerará el proceso de creación de índices. Se deben calcular estadísticas para estos índices.
- Ejecute en el nivel actual todos los procesos de lote de asignación de claves que se ejecutaron anteriormente en el modo de generación de claves inicial para ejecutar el paso Resolución de Clave Duplicada. Esto reasignará todas las claves duplicadas.