Текущее время: Ср, июн 18 2025, 13:19

Часовой пояс: 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
Сообщения: 3080
Откуда: Москва
Для повышения производительности при поиске вместо таблицы 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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