Hacer que las consultas esperen las actualizaciones de Data Gate sincronización (WAITFORDATA)
Puede posponer la ejecución de consultas en tablas en bases de datos de destino de Data Gate hasta que se hayan aplicado las últimas actualizaciones de sincronización.
Acerca de esta tarea
El proceso de sincronización se ejecuta de forma asíncrona y las actualizaciones de sincronización se aplican por lotes. Esto causa un desfase de actualidad de datos (latencia) entre las tablas de la base de datos de origen y las tablas de la base de datos de destino. Es decir, los datos de la base de datos de origen suelen ser más recientes que los datos de la base de datos de destino. La brecha es cero o mínima poco después de que se hayan aplicado las actualizaciones de sincronización a la base de datos de destino. Después de eso, la brecha se ensancha de nuevo.
Si es necesario que las consultas realizadas en la base de datos de destino recuperen datos lo más actualizados posible, el mejor momento para hacerlo es poco después de que se haya aplicado el último lote de actualizaciones. Por esa razón, se ha añadido una función a Data Gate que siempre pospone la ejecución de consultas a un punto en el tiempo.
Para provocar dicho retraso, debe añadir una configuración de registro especial (SET CURRENT QUERY WAITFORDATA) al principio de la consulta SQL que se envía a la base de datos de destino.
Los retardos WAITFORDATA solo son válidos para tablas sincronizadas. Los casos de uso imaginables se manejan de la siguiente manera:
- Una consulta se hace referencia a las tablas sincronizadas
- La ejecución de la consulta se retarda hasta que todas las tablas referenciadas estén sincronizadas.
- Una consulta hace referencia a tablas sincronizadas y no sincronizadas
- Las tablas no sincronizadas se ignoran. El proceso de consulta se inicia cuando las tablas sincronizadas se han actualizado en el periodo de retardo WAITFORDATA.
- Una consulta solo hace referencia a las tablas no sincronizadas
- El retardo WAITFORDATA se ignora y el proceso de consulta se inicia inmediatamente.
- Una consulta no hace referencia a ninguna tabla
- El retardo de todas formas se aplicará, por lo que el proceso de consulta se intentará o se iniciará después del periodo de retardo.
Un periodo de retardo WAITFORDATA solo se considera para consultas SQL que leen datos de tablas. Otras consultas u operaciones, como las operaciones DDL, no se retardarán.
WAITFORDATA)» no es compatible cuando se utiliza una base de datos de destino remota (consulte este enlace ).Procedimiento
SET CURRENT QUERY WAITFORDATA = n.m;
donde n.m es un número decimal que indica segundos. El mínimo es 0.0 (sin retraso). El máximo es 3600.0 (un retraso de una hora)
SET CURRENT QUERY WAITFORDATA = 120.0;
SELECT * FROM XYZ WHERE [...];
La primera línea establece el retardo de la ejecución de la consulta en 120 segundos. A continuación se muestra el código SQL de la consulta. La ejecución de la consulta se pospone hasta 120 segundos. Para todas las tablas sincronizadas a las que hace referencia la consulta, Data Gate intenta sincronizar todos los cambios confirmados que se han acumulado en la base de Db2 for z/OS datos de origen en el momento en que se inició la consulta. La consulta se ejecuta cuando se sincronizan todos los cambios confirmados necesarios. Si Data Gate no puede finalizar la sincronización de datos durante ese periodo, la consulta falla con un error de tiempo de espera excedido.
Resultados
SET
CURRENT QUERY WAITFORDATA especial, la consulta se ejecuta y el resultado se devuelve como de costumbre.Si la consulta falla, puede que se dé alguna de las condiciones de error de la Tabla 1 :
| Razón | Texto del mensaje | Causas comunes/solución |
|---|---|---|
SUBSCRIPTION_NOT_RUNNING |
Estado de sincronización de datos no válido. | El estado de sincronización de datos de la instancia de Data Gate no es Iniciado. Para cambiar el estado de sincronización:
|
INVALID_TABLE_STATE |
Las tablas se encuentran en un estado no válido. | Esta condición afecta a las tablas con estado de Error. No se aplica a las tablas que no están habilitadas para la sincronización, las cuales son ignoradas por el procesamiento WAITFORDATA. Si se produce este error, vuelva a cargar las tablas afectadas. |
TIMEOUT |
Se ha alcanzado el tiempo de espera de WAITFORDATA. | Es posible que las actualizaciones de sincronización pendientes no se apliquen dentro del período WAITFORDATA. Vuelva a ejecutar la consulta. Si vuelve a fallar, intente un retardo WAITFORDATA más largo. |