Дать элемент очереди столбцов

Назначение
 

Команда DIRA предназначена для получения информации об указанном элементе очереди столбцов.

Параметры вызова

inter(CBL, NULL, [OpBuf], [CondBuf], RowBuf);

Входные данные

Входными данными являются:

  • контрольный блок CBL;

  • буфер SQL-запросов OpBuf.

В контрольном блоке должны быть заполнены поля:

Имя поля Значение
Command "DIRA"
RowId Порядковый номер элемента очереди столбцов (отсчет начинается с 1)
LnBufRow Длина буфера выборки данных
Node Имя ЛИНТЕР-сервера

Буфер SQL-запросов OpBuf может содержать имя устанавливаемой для данного канала кодовой страницы, которая должна быть известна БД, то есть:

  • находиться в системной таблице LINTER_SYSTEM_USER.$$$CHARSET;

  • или быть описана как синоним в таблице LINTER_SYSTEM_USER.$$$CSALIAS;

  • или быть предопределённым значением UTF-8 или UCS2.

Выходные данные

Выходными данными являются:

  • контрольный блок CBL;

  • буфер выборки данных RowBuf.

В контрольном блоке будут возвращены:

Имя поля Значение
CodErr Код завершения запроса к СУБД ЛИНТЕР
LnBufRow Фактическая длина буфера выборки данных (sizeof(DIRA_OUT))
SysErr Код состояния ОС

В буфере выборки данных RowBuf информация будет представлена в следующем виде:

struct DIRA_OUT
   {
   L_LONG Owner;               /* Идентификатор владельца таблицы */
   L_CHAR TblName[MAX_ID_LEN]; /* Имя таблицы */
   L_CHAR ColName[MAX_ID_LEN]; /* Имя столбца */
   L_BYTE UpdFlag;             /* Признак корректировки столбца */
   L_BYTE Reserve[3];          /* Резерв */
   };

В полях буфера выборки данных будет содержаться:

Имя поля Значение
Owner Идентификатор владельца таблицы, столбец которой находится в указанном элементе очереди столбцов
TblName Имя таблицы, содержащей столбец элемента
ColName Имя столбца, находящегося в указанном элементе
UpdFlag Возвращается значение 1, если в момент выдачи команды DIRA измененные данные соответствующего столбца еще не были перенесены из системного пула в БД. После того как данные будут изменены в БД, этот признак сбрасывается. Поэтому для получения достоверной информации о частоте изменения данных столбца периодичность опроса очереди столбцов должна быть не больше периодичности обновления информации в БД

С помощью команды DIRA может быть получена следующая информация:

  • о частоте обращения к столбцу данной таблицы (по частоте присутствия данного элемента в очереди таблиц);

  • об интенсивности обращения к столбцу таблицы (чем меньше порядковый номер элемента очереди столбцов, тем чаще происходит обращение к данному столбцу таблицы);

  • о частоте корректировки данных в столбце таблицы (путем суммирования значений поля UpdFlag);

  • о влиянии установленного размера очереди столбцов на производительность (по частоте вытеснения и повторного включения элементов в очередь).

Первые 13 элементов очереди столбцов заняты столбцами системных таблиц в порядке, приведенном в таблице 14.

Таблица 14. Первые 13 элементов очереди столбцов
№ элементаИмя столбцаИмя таблицы
1$$$S11 $$$SYSRL
2$$$S12 $$$SYSRL
3$$$S13 $$$SYSRL
4$$$S14 $$$SYSRL
5$$$S21 $$$ATTRI
6$$$S22 $$$ATTRI
7$$$S23 $$$ATTRI
8$$$S24 $$$ATTRI
9$$$S31 $$$USR
10$$$S32 $$$USR
11$$$S33 $$$USR
12$$$S34 $$$USR
13$$$S35 $$$USR

Описание

Коды завершения
Код Описание
NORMAL Нормальное завершение
SMALLBUFKOR Недостаточный размер буфера выборки данных
EORR Элемент очереди с заданным порядковым номером не найден
Пример формирования команды
#include < string.h >
#include < stdlib.h >
#include "inter.h"

L_LONG LinterDIRA(TCBL *pCBL, L_LONG N, DIRA_OUT *Out)
   {
   memcpy(pCBL- >Command, "DIRA", 4);
   pCBL- >LnBufRow=sizeof(DIRA_OUT);
   pCBL- >RowId=N;
   pCBL- >PrzExe &= ~Q_ASYNC;
   inter(pCBL, NULL, NULL, NULL, Out);
   return pCBL- >CodErr;
   }
Пример использования команды