Текущее время: Сб, авг 02 2025, 21:16

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: SELECT FROM TABLE (READ COMMITTED) - Как ?
СообщениеДобавлено: Чт, мар 20 2008, 19:43 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 30 2007, 12:11
Сообщения: 21
Регулярно (каждый час) подчитываю данные из GLPCA и группирую суммы в разрезе МВП, МВЗ, Бизнес-сферы и т.д. в своей таблице.
Одновременно с этим, в GLPCA регулярно доливаются данные (по несколько десятков записей в секунду - система работает...)

Однако полученные суммы не соответствуют тому, что мы видим в отчете KE5Z.
Думаю, что это происходит потому, что при считывании очередной порции данных я натыкаюсь на незакоммиченные данные, которые затем возможно откатываются.

Вопрос:
Может ли кто подсказать, как читать только закоммиченные записи?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 20 2008, 20:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Да, вообще-то, незакоммиченные данные видно только из того DB LUW, в котором они вставлялись.

Вы лучше откройте секрет, откуда Вы знаете, какие строки из GLPCA уже были обработаны, а какие нет? Уж не по CPUDT+CPUTM ли?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 21 2008, 00:11 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 30 2007, 12:11
Сообщения: 21
Не совсем понятно, что Вы понимаете под словом "обработаны"

Я не то, чтобы знаю, а скорее подозреваю, что или пропускаю некоторые записи, или читаю такие, которые затем откатываются (например при возникновении ошибки во время заливки данных)

Так я думаю потому, что, насколько я знаю, - записи в GLPCA не изменяются и не удаляются, а только добавляются.

Если в двух словах, то я храню ID последней прочитанной записи и в каждом очередном сеансе чтения читаю, начиная с записи, имеющей ID большей чем тот, что был запомнен. Читаю далее до конца.
После обработки последней записи снова запоминаю ее ID.

Насколько я знаю, по умолчанию, САП читает таблицы из БД вообще никак их не блокируя, то есть не обращая внимания на те блокировки, которые могут быть установлены на эти записи (например блокировка при вставке или апдейте). Отсюда я делаю вывод о том, что выполняется "грязное чтение"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 21 2008, 02:22 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 30 2007, 12:11
Сообщения: 21
Кажется сам нашел ответ на свой вопрос...
Вот выдержка из хелпа по ABAP:

Uncommitted read (or dirty read)

A program using an "uncommitted read" to read data does not set locks on data objects and does not obey them. For this reason, programmers must bear in mind that their programs might read data that has not yet been finally written to the database with a database commit and could thus still be deleted from the database by a database rollback. "Uncommitted read" is the default setting in the SAP-system for the isolation level.


Committed read

A program using a "committed read" to read data obeys the locks on data objects. This means that programmers can be sure that their programs will read only data which has been finally written to the database with a database commit. You can set the isolation level in the SAP-system to "committed read" by calling the function module DB_SET_ISOLATION_LEVEL. The next database commit or rollback will reset the isolation level to its default setting, as will calling the function module DB_RESET_ISOLATION_TO_DEFAULT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 21 2008, 08:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
volm написал(а):
Если в двух словах, то я храню ID последней прочитанной записи
Вот про это и был вопрос. Хорошо, что не время :)

volm написал(а):
Насколько я знаю, по умолчанию, САП читает таблицы из БД вообще никак их не блокируя, то есть не обращая внимания на те блокировки, которые могут быть установлены на эти записи (например блокировка при вставке или апдейте). Отсюда я делаю вывод о том, что выполняется "грязное чтение"

Не скажу за все БД, конечно, но у нас на Oracle всё путём (проверено экспериментально). SAP выставляет максимальный уровень изоляции/сериализации на уровне DB LUW и базисники мне когда-то говорили, что они не знают даже, как это поменять.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 24 2008, 11:56 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 29 2007, 13:53
Сообщения: 251
sibrin написал:
Вот про это и был вопрос. Хорошо, что не время :)

Могу ошибаться, но, кажется, экстрактор в BW читает эту таблицу используя как-раз время, но с безопасным интервалом. :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 24 2008, 23:19 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 30 2007, 12:11
Сообщения: 21
А в каком смысле интервал может быть "безопасным" ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 25 2008, 09:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
volm написал(а):
А в каком смысле интервал может быть "безопасным" ?
Да, если процесс обновления застопорился, то запись может появиться существенно позже, чем cpudt.


Последний раз редактировалось sibrin Сб, мар 29 2008, 20:54, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 25 2008, 12:23 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 29 2007, 13:53
Сообщения: 251
volm написал(а):
А в каком смысле интервал может быть "безопасным" ?

Из хэлпа:
Цитата:
Example for Determining the Selection Interval for a Generic Delta
Safety Interval Upper Limit
The delta-relevant field is a timestamp.
The timestamp that was read last is 12:00:00. Delta extraction begins at 12:30:00. The safety interval for the upper limit is 120 seconds. The safety interval for the delta request is: 12:00:00 to 12:28:00. Upon completion of the extraction, the pointer is set to 12:28:00.


Для GLPCA по умолчанию безопасный интервал - 2 часа.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 27 2008, 22:58 
Начинающий
Начинающий

Зарегистрирован:
Пт, ноя 30 2007, 12:11
Сообщения: 21
Ах. если бы Вы дали ссылку в интернете (подозреваю, что это с сайта help.sap.com), где можно все это подробно прочитать...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 28 2008, 11:07 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 29 2007, 13:53
Сообщения: 251
volm написал(а):
Ах. если бы Вы дали ссылку в интернете (подозреваю, что это с сайта help.sap.com), где можно все это подробно прочитать...

Очень уж подробно не получится, но вот ссылки:
http://help.sap.com/saphelp_nw04/helpdata/en/37/4f3ca8b672a34082ab3085d3c22145/content.htm
http://help.sap.com/saphelp_nw04s/helpdata/en/44/9821620553053de10000000a1553f6/content.htm
А главное, не забывайте про гугл, который эту цитату легко находит. :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, мар 29 2008, 11:15 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, ноя 16 2006, 14:32
Сообщения: 40
Откуда: Беларусь
Пол: Мужской
Цитата:
Да, вообще-то, незакоммиченные данные видно только из того DB LUW, в котором они вставлялись.

Вы лучше откройте секрет, откуда Вы знаете, какие строки из GLPCA уже были обработаны, а какие нет? Уж не по CPUDT+CPUTM ли?

Уважаемый sibrin. На сколько точно выбираются данные при помощи CPUDT+CPUTM для таблиц EKBE COVP?
Если установить интервал безопасности в 5 10 20 минут для CPUDT+CPUTM станет чтение данных абсолютно точным?

_________________
ага и Вам всего доброго


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

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


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

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


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

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