Для точной настройки распределения ресурсов PDQ в зависимости от времени дня, когда выполняются пакетные задания, у нас есть утилита, которая устанавливает PDQPRIORITY на основе правил дня недели / часа дня, например:
PDQPRIORITY=$(throttle); export PDQPRIORITY
Однако, это исправлено во время запуска сценария, поэтому длительно выполняемые задания никогда не удушаются вверх или вниз по мере их выполнения. Чтобы исправить это, мы попробовали следующее:
CREATE PROCEDURE informix.set_pdq() RETURNING VARCHAR(50);
DEFINE pdq, dow SMALLINT;
DEFINE hr SMALLINT;
LET dow = WEEKDAY(CURRENT);
LET hr = TO_CHAR(CURRENT, '%H');
IF (dow == 0 OR dow == 6 OR hr < 8 OR hr > 14) THEN
LET pdq = 100;
SET PDQPRIORITY 100; -- SET PDQ does not accept a variable name arg.
ELIF (hr >= 8 AND hr <= 10) THEN
LET pdq = 40;
SET PDQPRIORITY 40;
ELIF (hr >= 11 AND hr <= 12) THEN
LET pdq = 60;
SET PDQPRIORITY 60;
ELIF (hr >= 13 AND hr <= 14) THEN
LET pdq = 80;
SET PDQPRIORITY 80;
END IF;
RETURN "PDQPriority set to " || pdq;
END PROCEDURE;
Через разные промежутки времени в SQL мы добавили:
EXECUTE PROCEDURE set_pdq();
Однако, хотя это и не дает сбоя, область действия SET PDQ, по-видимому, является локальной для SPL. onstat -g mgm
не сообщает о каких-либо изменениях в выделенных исходных ресурсах. Таким образом, добавление этих вызовов set_pdq()
, похоже, не имело никакого эффекта - ресурсы, выделенные при запуске программы, остаются неизменными.
Код встроен в оболочку SQL, то есть:
dbaccess -e $DBNAME << EOSQL
SELECT .. INTO TEMP ..;
EXECUTE PROCEDURE set_pdq();
SELECT .. INTO TEMP ..;
--etc
EOSQL
Таким образом, обратная интерполяция или интерполяция $ () происходит в начале скрипта, когда документ здесь передается в dbaccess. (Это устранило очевидное: SET PDQPRIORITY $(throttle);
)
Ух ты, это быстро стало многословным. Кто-нибудь может предложить какой-либо способ достижения этого, который не включает переписывание этих пакетных заданий полностью? Разбить SQL на более мелкие части не представляется возможным из-за большой зависимости от временных таблиц.