Текущее время: Пт, апр 19 2024, 11:47

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Вс, апр 07 2019, 20:55 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, авг 14 2009, 09:17
Сообщения: 91
Здравствуйте, коллеги!

Подскажите пожалуйста, перед кем то стояла задача по оптимизации выбора данных из таблицы DBTABLOG в части производительности для выполнения своих разработок на базе данной таблицы? Успешно ли была решена данная задача? И если задача была выполнена успешно, то подскажите пожалуйста, каким образом была организована выборка и обработка данных из таблицы DBTABLOG?

Версия компонентов системы SAP BW: 750.

Заранее спасибо!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Пн, апр 08 2019, 09:37 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
wolf_sv написал(а):
Здравствуйте, коллеги!

Подскажите пожалуйста, перед кем то стояла задача по оптимизации выбора данных из таблицы DBTABLOG в части производительности для выполнения своих разработок на базе данной таблицы? Успешно ли была решена данная задача? И если задача была выполнена успешно, то подскажите пожалуйста, каким образом была организована выборка и обработка данных из таблицы DBTABLOG?

Версия компонентов системы SAP BW: 750.

Заранее спасибо!

Я правильно понимаю, способы выборки данных через DBLOG_READ_WITH_STATISTIC (или DBLOG_READ)+ некоторые манипуляции с разбором logdata не устраивают по причине низкой производительности?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Пн, апр 08 2019, 12:30 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, авг 14 2009, 09:17
Сообщения: 91
Здравствуйте, Besa.

Ситуация следующая. Анализ зафиксированных изменений в таблице DBTABLOG за требуемый период времени через транзакцию SCU3 выполняется крайне медленно. Для решения данной проблемы в качестве предварительного решения было предложено скопировать реализацию транзакции SCU3 и создать в ней необходимые индексы для работы с внутренними таблицами с целью получения требуемой производительности. Но данное решение не помогло. Для принятия правильного решения по ускорению выбора и обработки данных из таблицы DBTABLOG в своих разработках я решил поинтересоваться. Какими способами выбора и разбора данных из таблицы DBTABLOG пользуются специалисты в других компаниях с целью получения требуемой производительности в своих разработках?

Буду признателен также за ссылки на документацию для решения проблем с производительностью по работе с таблицей DBTABLOG.

Заранее спасибо.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG  Тема решена
СообщениеДобавлено: Пн, апр 08 2019, 14:57 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Посмотрите внимательно на таблицу DBTABLOG

Ключ у нее такой
LOGDATE SYDATS DATS 8 0 ДАТА (8-значн.) для SYST
LOGTIME SYTIME TIMS 6 0 TIME-элемент данных для SYST
LOGID LOGID CHAR 18 0 Уникальный идентификатор записи в DBTABLOG

Индексы такие:
All Log Entries for a Table with Log Key
TABNAME Имя таблицы
LOGKEY Переменная ключевая часть таблицы

All log entries for a table
TABNAME Имя таблицы

Исходя из этого делайте наиболее оптимальный select в DBTABLOG исходя из условий Вашей задачи.

После чего преобразуете LOGDATA.
В интернете есть ряд примеров, например https://archive.sap.com/discussions/thread/486920
Из моих старых заметок вот что нашел, может даже это не я писал, не помню.
Соответственно ФМы типа DBLOG_READ_WITH_STATISTIC Вам не нужно использовать.

Code:
*&---------------------------------------------------------------------*
*&      Form  LOG_Z_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM log_z_table .
refresh: t_log01, t_obj01, p_my_dfies, gt_fixvalues, result[].
*{

*считаем лог
  s_obj01-obj = 'ZMMZZZ'."<<<<<
  INSERT s_obj01 INTO TABLE t_obj01.
***ключ для того чтобы отсеить логи
  CONCATENATE sy-mandt zbanfn zbnfpo INTO key."<<<
  CALL FUNCTION 'DBLOG_READ_WITH_STATISTIC'
    EXPORTING
      from_day                   = '20100201'
*   FROM_TIME                  = '000000'
      to_day                     = sy-datum
*   TO_TIME                    = '235959'
*   ACCESS_DATABASE            = 'X'
*   ACCESS_ARCHIVES            = ' '
*   AUTO_ARCH_SEL              = ' '
*   USER_LIST                  =
*   LOG_KEYS                   =
* IMPORTING
*   ARCH_INFO                  =
    CHANGING
      log_list                   = t_log01
      obj_cnt_list               = t_obj01
* EXCEPTIONS
*   ARCHIVE_ACCESS_ERROR       = 1
*   NO_ARCHIVES_FOUND          = 2
*   OTHERS                     = 3
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  DELETE t_log01 WHERE logkey+0(18) <> key.    "<<<<<
*}

*((
*считаем поля таблицы
  CALL FUNCTION 'GET_FIELDTAB'
   EXPORTING
*   LANGU                     = SY-LANGU
*   ONLY                      = ' '
     tabname                   = 'ZMM_ZAYA_BYU'
*   WITHTEXT                  = 'X'
* IMPORTING
*   HEADER                    =
*   RC                        =
    TABLES
      fieldtab                  = p_my_dfies
* EXCEPTIONS
*   INTERNAL_ERROR            = 1
*   NO_TEXTS_FOUND            = 2
*   TABLE_HAS_NO_FIELDS       = 3
*   TABLE_NOT_ACTIV           = 4
*   OTHERS                    = 5
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
*))

*((
*считаем название действий (создать удалить нов стар и тд)
  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname              = 'TLOG_TYPE'
*      FIELDNAME            = ' '
*      LANGU                = SY-LANGU
*      LFIELDNAME           = ' '
*
     all_types            = 'X'
*      GROUP_NAMES          = ' '
*      UCLEN                =
*    IMPORTING
*      X030L_WA             =
*      DDOBJTYPE            =
*      DFIES_WA             =
*      LINES_DESCR          =
   TABLES
*      DFIES_TAB            =
     fixed_values         = gt_fixvalues
    EXCEPTIONS
      not_found            = 1
      internal_error       = 2
      OTHERS               = 3
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
*))

*расшифровка лога + сбор таблицы

  ASSIGN tabdata_curr TO <table_struc>
   CASTING TYPE (s_obj01-obj).

  LOOP AT t_log01 INTO s_log01.

    MOVE-CORRESPONDING s_log01 TO result.

    LOOP AT p_my_dfies ASSIGNING <dfies>.
* convert endianess
      ASSIGN: COMPONENT <dfies>-fieldname OF
               STRUCTURE <table_struc> TO <curfld>,
              <curfld> TO <curfld_x> CASTING.
      ASSIGN s_log01-logdata+<dfies>-offset(<dfies>-intlen)
            TO <oldfld_x> CASTING.
      <curfld_x> = <oldfld_x>.
      CONCATENATE 'RESULT-' <dfies>-fieldname INTO sss.
      ASSIGN (sss) TO <fs>.
      <fs> = <curfld>.

    ENDLOOP.

    READ TABLE gt_fixvalues INTO s_fix WITH KEY low = s_log01-optype.
    result-act = s_fix-ddtext.

    APPEND result.
    CLEAR result.

  ENDLOOP.
ENDFORM.                    " LOG_Z_TABLE


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Пн, апр 08 2019, 16:17 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, авг 14 2009, 09:17
Сообщения: 91
Спасибо, Вам за ваши рекомендации. Надеюсь они мне помогут в решении проблем связанных с производительностью по работе с таблицей DBTABLOG в своих разработках.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Чт, апр 11 2019, 08:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
Для повышения производительности при поиске вместо таблицы DBTABLOFG лучше всего перейти на документы изменений (транзакция SCDO, материалы в курсе BC414, в одном из аппендиксов).
При этом методе данные изменений хранятся в прозрачных таблицах и выбрать нужные данные проще.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Чт, апр 11 2019, 12:44 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, авг 14 2009, 09:17
Сообщения: 91
Спасибо, Удав за проявленный интерес к данной теме. Я уже тоже начинаю больше отдавать предпочтения к использованию варианта с документами изменений. С вашей аргументацией в пользу использования варианта с документами изменений я согласен.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Чт, апр 11 2019, 12:49 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, авг 14 2009, 09:17
Сообщения: 91
По документам изменений таблица CDPOS только кластерная, что несет ряд ограничений по работе с ней. А так вариант использования документов изменений вместо изменений по таблицам (DBTABLOG) более привлекателен.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборка и обработка данных из таблицы DBTABLOG
СообщениеДобавлено: Чт, апр 11 2019, 13:07 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
wolf_sv, Если "пишете" лог изменений для своего объекта, тогда да, можно рассмотреть использование change_docs, но Вы должны понимать как это работает, и чем это принципиально отличается от DB log.
https://sapboard.ru/forum/viewtopic.php?f=13&t=87263&start=0
https://help.sap.com/saphelp_nw70ehp3/helpdata/en/48/d1c0eff6c96745e10000000a421937/frameset.htm
Если же Вы читаете логи изменений у стандартного объекта/таблицы, для которой не предусмотрены change_docs, тогда без вариантов.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB