Текущее время: Вт, апр 16 2024, 12:55

Часовой пояс: 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 часа


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

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


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

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