CftClub.ru
Клуб специалистов ЦФТ-Банк

Вывести список локальных объектов
На страницу Пред.  1, 2
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеПт Апр 05, 2013 16:03    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
Кому как удобнее. Не на всех операциях включено журналирование. Тем более после сбора статистики придется журналирование на лишних операциях отключать.

Ну так включите на всех - или вручную или, если заморочиться, операцией.

Зато не надо переписывать операции...
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПт Апр 05, 2013 16:15    Ответить с цитатой
Полезность: Нет оценки
Andry пишет:

Ну так включите на всех


Это далеко не есть гуд, для производительности сервака Exclamation
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеПт Апр 05, 2013 16:19    Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
Andry пишет:

Ну так включите на всех


Это далеко не есть гуд, для производительности сервака Exclamation

логично, заведомо известные часто вызываемые локальные операции можно не журналировать.
А как иначе можно проще всего решить заявленную задачу - проанализировать статистику выполнения ЛО чтобы найти какие не используются?
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПн Апр 08, 2013 07:30    Ответить с цитатой
Полезность: Нет оценки
у нас целая подсистема уже за локальными объектами следит. Smile каждый объект на виду.

Все локальные объекты:
Код:

procedure LoadAllLocal(p_app [NCB_LOCAL_APP])
is
begin
   for
      (
            select
               c(c.id:ident, decode(c.obj_type, 'METHODS', 'METH', 'CRITERIA', 'CRIT', 'CLASSES', 'TYPE') :obj_type, c.class_id:class_id
                         , c.short_name:short_name, c.name:name)
            in
                  (
                   select c
                            (
                               c.id:id
                               , 'CLASSES':obj_type
                               , c.id:class_id
                               , c.id:short_name
                               , c.name:name
                            )
                   in classes%rowtype--, (class_tables%rowtype:ct)
                      --where c.id=ct.class_id
         
                   union
         
                   select m
                   (
                      m.id:id
                      , 'METHODS':obj_type
                      , m.class_id:class_id
                      , m.short_name:short_name
                      , m.name:name
                   )
                   in methods%rowtype
                      where m.flags not in ('Z', 'A')
         
                   union
         
                   select m
                   (
                      m.id:id
                      , 'METHODS':obj_type
                      , m.class_id:class_id
                      , m.short_name:short_name
                      , m.name:name
                   )
                   in methods%rowtype
                      where m.flags='Z'
                        and not exists (select cr(1) in criteria%rowtype where cr.id = m.id)
                   union
         
                   select c
                   (
                      c.id:id
                      , 'CRITERIA':obj_type
                      , c.class_id:class_id
                      , c.short_name:short_name
                      , c.name:name
                   ) in criteria%rowtype
                  )
           where not exists (
                select o(1) in objects_options%rowtype where o.obj_type = c.obj_type
                and o.class_id = c.class_id  and (o.short_name = c.short_name or c.short_name like o.short_name)
             )
          )
   loop
      p_app.[OBJS].[NEW_AUTO](
         &L.AddObj(c.obj_type, c.class_id, c.short_name, GetNote)      --Объект
      );
   end loop;
end;   
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПн Апр 08, 2013 07:34    Ответить с цитатой
Полезность: 1
По поводу анализа не используемых. Немного корявое решение, но может можно пользоваться. В Платформе развития есть функционал для сбора статистики:

Цитата:
Краткое описание типов и операций.

Типы, объединяемые общим термином "Статистика", предназначены для сбора
и анализа статистики о запусках операций, заданий, отчетов, выборок из представлений (которые терминологически обозначаются понятием "действие").

Основной тип - RUN_SESSIONS, который содержит основной функционал
(операции и представления). Экземпляры типа - это отслеживаемые
сессии пользователей, для которых собирается статистика, создаются
и удаляются автоматически.


Если ее включить, то неиспользуемые операции можно получить вот так:

Код:
procedure LoadNoUseLocal(p_app [NCB_LOCAL_APP])
is
begin
   for
      (
            select
               c(c.id:ident, decode(c.obj_type, 'METHODS', 'METH', 'CRITERIA', 'CRIT', 'CLASSES', 'TYPE') :obj_type, c.class_id:class_id
                         , c.short_name:short_name, c.name:name)
            in
                  (
                   select c
                            (
                               c.id:id
                               , 'CLASSES':obj_type
                               , c.id:class_id
                               , c.id:short_name
                               , c.name:name
                            )
                   in classes%rowtype, (class_tables%rowtype:ct)
                      where c.id=ct.class_id
         
                   union
         
                   select m
                   (
                      m.id:id
                      , 'METHODS':obj_type
                      , m.class_id:class_id
                      , m.short_name:short_name
                      , m.name:name
                   )
                   in methods%rowtype
                      where m.flags not in ('Z', 'A')
         
                   union
         
                   select m
                   (
                      m.id:id
                      , 'METHODS':obj_type
                      , m.class_id:class_id
                      , m.short_name:short_name
                      , m.name:name
                   )
                   in methods%rowtype
                      where m.flags='Z'
                        and not exists (select cr(1) in criteria%rowtype where cr.id = m.id)
                   union
         
                   select c
                   (
                      c.id:id
                      , 'CRITERIA':obj_type
                      , c.class_id:class_id
                      , c.short_name:short_name
                      , c.name:name
                   ) in criteria%rowtype
                  )
           where not exists (
                select o(1) in objects_options%rowtype where o.obj_type = c.obj_type
                and o.class_id = c.class_id  and (o.short_name = c.short_name or c.short_name like o.short_name)
             )
             and c.id not in
                (select x(x.[OBJ_ID] : group_id)
                  in ::[RUN_GROUPS] all)
          )
   loop
      p_app.[OBJS].[NEW_AUTO](
         &L.AddObj(c.obj_type, c.class_id, c.short_name, GetNote2)      --Объект
      );
   end loop;
end;


Господа! Я понимаю что это очень коряво и много чего не учитывается. Но вариант такой предложить считаю уместным...
Ezhik
Участник со стажем


Вступление в Клуб: 17.04.2009
СообщениеПн Апр 08, 2013 09:12    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
По поводу анализа не используемых. Немного корявое решение, но может можно пользоваться. В Платформе развития есть функционал для сбора статистики:

Цитата:
Краткое описание типов и операций.

Типы, объединяемые общим термином "Статистика", предназначены для сбора
и анализа статистики о запусках операций, заданий, отчетов, выборок из представлений (которые терминологически обозначаются понятием "действие").

Основной тип - RUN_SESSIONS, который содержит основной функционал
(операции и представления). Экземпляры типа - это отслеживаемые
сессии пользователей, для которых собирается статистика, создаются
и удаляются автоматически.


Если ее включить
Как вариант, но крайне нежелательно запускать на боевой схеме, т. к. очень высок риск того, что просядет производительность.
prog
Эксперт


Вступление в Клуб: 03.03.2008
СообщениеПн Апр 08, 2013 09:25    Ответить с цитатой
Полезность: Нет оценки
еще RUN_SESSIONS ( ипрочие таблички этой подсистемы) пухнут быстро. Однако ЦФТ упрямо считает объекты, и банку надо их минимизировать...
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru