Текущее время: Пт, мар 29 2024, 08:53

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Чтение буферной таблицы в функциональном модуле: выполняется ли каждый раз в отдельном LUW?
СообщениеДобавлено: Ср, сен 28 2022, 11:18 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 07 2011, 08:29
Сообщения: 325
Добрый день, подскажите, пожалуйста.
Если в фм производится чтение буферной таблицы, то обращение к БД идет какждый раз при вызове фм-ника, или если фм-ник вызывается несколько раз внутри одной программы то только первый раз, а последующие обращаения идут к буферу?

Ситуация следующая:
в ФМ считывается буферизованная табличка, но метод считывания сделан таким образом, что считывание ведётся вне буфера из БД
на вопрос а почему не сделать было, чтобы считывание было буферизованным
ответили, что это особого смысла не имеет так как считывание в сеансе будет один раз и далее сеанс будет прерываться затем снова подключаться и запрашивать
в таком случае буфер сказали, что не работает, то есть считывание для сессии пользователя всегда идёт из базы
было предположение, что буферизация таблиц распространяется не на сессию а на глобальную область системы, Скажите, пожалуйста, как верно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: чтение буферной таблицы в функциональном модуле, выполняется ли каждый раз в отдельном luw?
СообщениеДобавлено: Ср, сен 28 2022, 12:18 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
1. Имеете ли вы в виду буферизацию таблиц, которая включается в se11 по кнопке "технические параметры таблицы" со установленной галочкой "полная буферизация"?

2. Если да, то такой буфер можно представить как полную копию этой таблице в памяти каждого сервера приложений, причем SAP сам поддерживает её актуальность (иногда с некоторым опозданием если таблицу меняли через один сервер приложений, а считывают через другой).

3. В любом случае первый же селект в этом случае попадет в буфер и будет быстрым!
Важно - не каждый селект к буфериованной таблице попадает в буфер сервера приложений.
Условия описаны в справке по ABAP (кажется, прямо по контекстному слову select), но если по простому - в where должны должны быть заполнены поля первичного ключа и не должно быть джойнов.

4. Если есть сомнения, как именно отработал селект (к буферу сервера приложений или к БД) , то не гадайте на кофейной гуще, а смотрите трассировку в st05.

5. Есть и другие способы буферизации таблиц, например через статические переменные/атрибуты классов или через механизм shares memory object.
В каждом случае свои особенности.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: чтение буферной таблицы в функциональном модуле, выполняется ли каждый раз в отдельном luw?
СообщениеДобавлено: Ср, сен 28 2022, 12:46 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 07 2011, 08:29
Сообщения: 325
Да это буферизованная в технических параметрах пользователя.

Правильно ли я понимаю, если мы условно в одной программе уже считали в буфер, то при обращении к этой буферизованной таблице, согласно правилам, в другой программе идет обращение к буферу, а не бд, верно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: чтение буферной таблицы в функциональном модуле, выполняется ли каждый раз в отдельном luw?
СообщениеДобавлено: Ср, сен 28 2022, 16:30 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Насколько я понимаю, не правильно.

Буфер таблиц на серверах приложений автоматически поддерживается в актуальном состоянии с момента старта соответствующего сервера.
Для обновления буфера не требуется никакого явного select из ABAP программы.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: чтение буферной таблицы в функциональном модуле, выполняется ли каждый раз в отдельном luw?
СообщениеДобавлено: Ср, сен 28 2022, 16:34 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
А вообще, как говорила моя первая наставница SAP, "читайте хелп, там всё написано".

Вторая ссылка google по запросу sap table buffering ведет в правильное место:
https://help.sap.com/docs/SAP_NETWEAVER ... ion=7.0.35

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: чтение буферной таблицы в функциональном модуле, выполняется ли каждый раз в отдельном luw?
СообщениеДобавлено: Пт, сен 30 2022, 07:17 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 01 2013, 10:27
Сообщения: 35
Добрый день. В моём понимании всё-таки первый select из таблицы инициализирует заполнение буфера, и не обязательно всей таблицы полностью ( зависит от типа буферизации). Иначе бы никакой памяти не хватило на всё буферизированные таблицы. Проверить можно в st05, включив трассировку и bd trace и buffer trace для таблицы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: чтение буферной таблицы в функциональном модуле, выполняется ли каждый раз в отдельном luw?
СообщениеДобавлено: Пт, сен 30 2022, 08:28 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 07 2011, 08:29
Сообщения: 325
спасибо большое


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: чтение буферной таблицы в функциональном модуле, выполняется ли каждый раз в отдельном luw?
СообщениеДобавлено: Пт, сен 30 2022, 10:18 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Rizor написал(а):
Добрый день. В моём понимании всё-таки первый select из таблицы инициализирует заполнение буфера, и не обязательно всей таблицы полностью ( зависит от типа буферизации). Иначе бы никакой памяти не хватило на всё буферизированные таблицы. Проверить можно в st05, включив трассировку и bd trace и buffer trace для таблицы.


Почитал доку:
https://help.sap.com/docs/SAP_NETWEAVER ... ion=7.0.35

Получается, что при полной буферизации таблицы:
1. сервер приложений при старте таблицу в буфер не считывает
2. сервер приложений полностью считывает содержимое таблицы в свой буфер при первом же селекте к этой таблице (не в рамках одного LUW, а просто первого селекта за время работы этого сервера приложений)

_________________
Удача - результат нашего желания (© А. Нортон)


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

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


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

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


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

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