Loading



+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средстваТема:
|- Оптимизация ABAP-а



Автор Тема: Оптимизация ABAP-а  (Прочитано 27857 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #50 : Январь 22, 2009, 10:50:48 pm »
а не проходит where r_file is null ?
не пробовал... но тут похоже если так пройдет, то надо будет все запросы по этому полю по всей программе менять на r_file is null or r_file = 0, что уже не кошерно, так что проще таки новое поле принудительно присвоить в space или в ноль, если возможно и потом уже не париться.

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #51 : Январь 22, 2009, 10:51:52 pm »
как по мне так правильно выбирать .... хотя сам помню когда-то сидел пытался выбрать по условию что поле типа дата пустое ..... самое интересное, сюда не написал .... а теперь не помню ....
кажись писал WHERE docdate = '' ....
Не с датой там фишка другая, там точно известно что поле дата будет '00000000'.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #52 : Январь 22, 2009, 10:52:40 pm »
ну может быть, я же не знаю твоих условий .....

как по мне закладыватся на то что ты обновил, источник ошибок .... вдруг забудеш обновить и выборка пойдет ....

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #53 : Январь 22, 2009, 10:53:33 pm »
Не с датой там фишка другая, там точно известно что поле дата будет '00000000'.
буду на работе поищу, там ксати у меня так не прошло ..... не помню точно

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #54 : Январь 22, 2009, 10:57:21 pm »
как по мне закладыватся на то что ты обновил, источник ошибок .... вдруг забудеш обновить и выборка пойдет ....
Условие я написал какое... а обновить, так это надо в любом случае первый раз сделать для всех записей которые существовали до внесения нового поля, для записей, который будут вставлены после добавления нового поля, уже корректно работает выборка на space или ноль. Так что тут именно грабли в том что поле не конвертировано. Возможно что IS NULL пройдет, но если у меня запросов уже три десятка по программе, то добавлять лишнее сравнение на то что пока обработаются все старые записи, да и вообще лишнее сравнение, которое через месяц точно уже будет лишним, короче апдейтик будет самое оно.

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #55 : Февраль 19, 2009, 09:12:57 pm »
В общем из этого поста: http://sapforum.biz/index.php/topic,510.0.html

Есть выборка и есть обработка/модификация данных внутренней таблицы в LOOP AT / ENDLOOP. Само собой есть два варианта, через MODIFY и используя FIELD-SYMBOLS, в общем во втором случае производительность просто в разы больше, что видно из теста! Так что считайте, что это рекомендации лучших собаководов при обновлении внутренних таблиц данных.

Однако подтверждаю, и так провел небольшой тест, есть табличка MSEG, система тестовая записей  123 226, сделана программка следующего вида:
REPORT  yuuk_test_select.

DATA: lt_mseg LIKE mseg OCCURS 1 WITH HEADER LINE,
      runtime_1 TYPE i,
      runtime_2 TYPE i,
      time_diff TYPE i.

FIELD-SYMBOLS: <fs> LIKE LINE OF lt_mseg.

SELECT * INTO TABLE lt_mseg
FROM mseg.

GET RUN TIME FIELD runtime_1.
LOOP AT lt_mseg.
  lt_mseg-bwart = '000'.
  MODIFY lt_mseg.
ENDLOOP.
GET RUN TIME FIELD runtime_2.
time_diff = runtime_2 - runtime_1.
WRITE: / time_diff.

GET RUN TIME FIELD runtime_1.
LOOP AT lt_mseg ASSIGNING <fs>.
  <fs>-bwart = '000'.
ENDLOOP.
GET RUN TIME FIELD runtime_2.
time_diff = runtime_2 - runtime_1.
WRITE: / time_diff.
Результат на экране, комментарии я так думаю излишние, разница в производительности даже не на лице  ;) в надцать раз практически, т.е.  192 580 миллисекунд против  12 172, кажется закрывают данный вопрос как нужно делать обновления внутренних таблиц.

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 142
  • Reputation Power: 0
  • NachDenken has no influence.
Re: Оптимизация ABAP-а
« Ответ #56 : Май 21, 2009, 09:06:14 am »
Спасибо партии администрации за возвращения ника :)
есть вопрос скорее по оптимизации выполнения select
задачка выполнить 2-3 тяжелых селекта в паралельном фоновом режиме,
есть 2 (у меня) варианта
1) call function селект ...new task и потом их ловить в процедурке on end task
2) запустить  job_open submit селект

как лучше ?

селект к одной и тойже таблице в 2 разных фоновых заданиях будет быстрее чем 2 селекта последовательно ?

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #57 : Май 21, 2009, 09:37:30 am »
1) call function селект ...new task и потом их ловить в процедурке on end task
2) запустить  job_open submit селект
Я не тестировал оба варианта, делал по второму пункту.

селект к одной и тойже таблице в 2 разных фоновых заданиях будет быстрее чем 2 селекта последовательно ?
Быстрее будет работать два параллельных запроса, чем два последовательных, но само собой каждый отдельный запрос будет медленнее при параллельной обработке чем при последовательно.

Тут есть правда такая вещь как кеширование, если данные обоих запросов очень близкие по теме, то... я бы замерил время выполнения обоих вариантов на твоих данных и тода уже принимал бы решение. (Как измерять время выполнения тут уже написано)

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #58 : Июнь 05, 2009, 02:28:41 pm »
Можно и мои 5 коп?

По поводу "LOOP AT + INTO" vs "LOOP AT + ASSIGNING", тут как раз занимаюсь оптимизацией одной гениальной програмульки, написанной неким месье Паганелем (дизайн и все ..... лапочка, только быстродействие).....Ннндда, .....

 вот пару замерчиков, выводы очевидны:
1. LOOP AT gt_alvtab INTO ls_alvtab.
2. LOOP AT gt_alvtab ASSIGNING <fs_alvtab>.
« Последнее редактирование: Июнь 05, 2009, 02:34:12 pm от Паганель »

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 142
  • Reputation Power: 0
  • NachDenken has no influence.
Re: Оптимизация ABAP-а
« Ответ #59 : Июнь 05, 2009, 02:31:38 pm »
ого какая существенная разница в тормозах ,
для LOOP AT gt_alvtab ASSIGNING <fs_alvtab>.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #60 : Июнь 05, 2009, 02:35:53 pm »
ого какая существенная разница в тормозах ,
для LOOP AT gt_alvtab ASSIGNING <fs_alvtab>.

Ссори, привел полные логи, но реально изменения касались только последней строки
calc_data 14.457.162 и calc_data 11.666.928

P.S. В пред. посте рисунки поменял :-)

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #61 : Июнь 05, 2009, 02:44:01 pm »
Еще пару заметок и мыслей-вопросов

1. Странно SAP выбирает какие индексы использовать, раньше я думал что порядок
полей в условии WHERE, как раз и определяет, какой индекс юзается, как оказалось -  не так.
На выбор индекса, как я понял, влияют только количество параметров в условии WHERE.

2. ! Как оказалось, если параметр (selopt) не заполнен, он все равно влияет на выбор индекса.
Т.е.:
Первый вариант:
  WHERE
          matnr IN  so_matnr     AND
          werks IN  so_werks     AND
          sobkz = 'K'            AND          
          lifnr IN  so_lifnr     AND " даже если пустой so_lifnr, он все равно влияет на выбор индекса

У меня из-за него подтягивался какой-то "неправильный" :-) индекс.

Второй вариант:
  WHERE
          matnr IN  so_matnr     AND
          werks IN  so_werks     AND
          sobkz = 'K'            AND          
          "!!!!! lifnr IN  so_lifnr     AND " закомментировал, теперь выбирается нужный индекс...

уфффф.... сссори, что сумбурно, радость переполняет ...
« Последнее редактирование: Июнь 05, 2009, 02:45:32 pm от Паганель »

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #62 : Июнь 05, 2009, 04:07:39 pm »
На выбор индекса, как я понял, влияют только количество параметров в условии WHERE.
Ну ты же сам написал... порядок полей в условии WHERE!!!, а какая разница есть справа значение для сравнения или нет?!

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #63 : Июнь 05, 2009, 04:49:22 pm »
Ну ты же сам написал... порядок полей в условии WHERE!!!, а какая разница есть справа значение для сравнения или нет?!
Ну вот, хотя если реально в данный момент времени, данные не передаются, оптимизатор должен бы отбросить несипользуемые  условия ....

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #64 : Июнь 05, 2009, 04:57:38 pm »
Ну вот, хотя если реально в данный момент времени, данные не передаются, оптимизатор должен бы отбросить несипользуемые  условия ....
Ну я бы про отбросить так не говорил, так как я как раз иногда использую такую конструкцию чтобы выбирался нужный мне индекс при выборке, а вообще у тебя оракловая база? Прибей индекс гвоздями и буде тебе счастье...

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #65 : Июнь 05, 2009, 05:00:37 pm »
Ну я бы про отбросить так не говорил, так как я как раз иногда использую такую конструкцию чтобы выбирался нужный мне индекс при выборке, а вообще у тебя оракловая база? Прибей индекс гвоздями и буде тебе счастье...
да нет "ДИБИ Цвай" ....  :-), это как "гвоздями"?

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #66 : Июнь 05, 2009, 05:04:31 pm »
да нет "ДИБИ Цвай" ....  :-), это как "гвоздями"?
Ну под DB2 не знаю надо документацию смотреть, опять же может Дмитрий знает, там типа хинт использования индекса можно указывать... но админы БД обычно это сильно не любят... т.е. мы жестко говорим какой индекс должна использовать система.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 297
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Оптимизация ABAP-а
« Ответ #67 : Июнь 05, 2009, 05:11:27 pm »
Цитировать
уфффф.... сссори, что сумбурно, радость переполняет ...
По праву передавшего эстафетную палочку месье Паганелю. ;)
2 Паганель: как-то внятно писать сразу нужно писать, задача, результат, выводы, стройность текста сообщения должна быть на уровне. А то как же месье Паганель, вы модератором тематики в скором времени будете: начинающий не поймет о чем это он, куда плыть? ::)

P.S. Это так, оффтоп, просто контент должен быть четким. 8)
« Последнее редактирование: Июнь 05, 2009, 05:14:34 pm от Dmitriy »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 297
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: Оптимизация ABAP-а
« Ответ #68 : Июнь 05, 2009, 05:12:41 pm »
Ну под DB2 не знаю надо документацию смотреть, опять же может Дмитрий знает, там типа хинт использования индекса можно указывать... но админы БД обычно это сильно не любят... т.е. мы жестко говорим какой индекс должна использовать система.
Хинт иногда нужно указывать, однозначно.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #69 : Июнь 05, 2009, 05:15:22 pm »
По праву передавшего эстафетную палочку месье Паганелю. ;)
2 Паганель: как-то внятно писать сразу нужно писать, задача, результат, выводы, стройность текста сообщения должна быть на уровне. А то как же месье Паганель, вы модератором тематики в скором времени будете: начинающий не поймет о чем это он, куда плыть? ::)
Все правильно Вы написали, мой уважаемый друг Дима, только не учли одного: природы человека по имени Паганель ......  который и получил сие прозвище еще в школе, за сию рассеянность и непоследовательность ...  ссори ... стараюсь.... буду исправляется ..

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #70 : Июнь 05, 2009, 05:15:56 pm »
Хинт иногда нужно указывать, однозначно.
Слышал, вроде бы видел, тока не помню как пишется ....  ;-)

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #71 : Июнь 05, 2009, 05:21:12 pm »
По праву передавшего эстафетную палочку месье Паганелю. ;)
P.S. Это так, оффтоп, просто контент должен быть четким. 8)

Поддежрживаю, "должен быть четким".

..... вы модератором тематики в скором времени будете:.....
Ну это бабка на двое сказала, как говортся "ры...м еще не дорос"

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.151
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #72 : Июнь 05, 2009, 05:23:09 pm »
Хинт иногда нужно указывать, однозначно.
Синтаксис не подскажешь сразу, а то я что-то найти не могу..

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #73 : Июнь 05, 2009, 05:30:06 pm »
Синтаксис не подскажешь сразу, а то я что-то найти не могу..
ага, а то видел, кажись в mb5b... сижу, ищу ...  :-(

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: Оптимизация ABAP-а
« Ответ #74 : Июнь 05, 2009, 08:57:06 pm »
Поддежрживаю, "должен быть четким".
Ну это бабка на двое сказала, как говортся "ры...м еще не дорос"
Еще раз поддерживаю, "дурак, это тот кого никто не понимает"


 


Facebook Comments