A partir de la version 11.50 de Informix se pueden programar tareas para que se ejecuten tanto en momentos puntuales en el tiempo como a intervalos pre-configurados. Estas tareas ejecutan commandos sql, procedimientos almacenados y rutinas (java y c) definidas por el usuario, y se denominan tasks y sensors.
La diferencia entre un sensor y una tarea es que el sensor es capaz de almacenar datos en tablas para posterior análisis.
Ejemplos:
Podemos crear una tarea para lanzar ckeckpoints cada 2 minutos entre las 8 AM y las 7 PM los lunes, miércoles y viernes de cada semana:
INSERT INTO ph_task
( tk_name,
tk_description,
tk_type,
tk_group,
tk_execute,
tk_start_time,
tk_stop_time,
tk_frequency,
tk_Monday,
tk_Tuesday,
tk_Wednesday,
tk_Thursday,
tk_Friday,
tk_Saturday,
tk_Sunday)
VALUES
( «Example Checkpoint»,
«Example to do a checkpoint every 2 minutes.»,
«TASK»,
«EXAMPLES»,
«EXECUTE FUNCTION admin(‘checkpoint’)»,
DATETIME(08:00:00) HOUR TO SECOND,
DATETIME(19:00:00) HOUR TO SECOND,
INTERVAL ( 2 ) MINUTE TO MINUTE,
‘t’,
‘f’,
‘t’,
‘f’,
‘t’,
‘f’,
‘f’);
Para guardar información de consumos de memoria cada 30 minutos en la tabla mon_memory_system y eliminar registros de fecha anterior a los últimos 30 días, podemos crear el siguiente sensor:
INSERT INTO ph_task
(
tk_name,
tk_group,
tk_description,
tk_result_table,
tk_create,
tk_execute,
tk_stop_time,
tk_start_time,
tk_frequency,
tk_delete
)
VALUES
(«mon_memory_system»,
«MEMORY»,
«Server memory consumption»,
«mon_memory_system»,
«create table mon_memory_system (ID integer, class smallint, size int8,
used int8, free int8 )»,
«insert into mon_memory_system select $DATA_SEQ_ID, seg_class, seg_size,
seg_blkused, seg_blkfree FROM sysmaster:sysseglst»,
NULL,
NULL,
INTERVAL ( 30 ) MINUTE TO MINUTE,
INTERVAL ( 30 ) DAY TO DAY
);