Показать сообщение отдельно
Старый 17.09.2013, 15:27   #28  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Использование RecordInsertList предполагает вызов метода insertDatabase() в самом конце для сброса оставшихся в буфере записей, более того, без вызова этого метода никто не гарантирует, что какие-либо записи вообще будут вставлены. Таким образом, этот метод может служить в т.ч. для ожидания завершения предыдущих асинхронных вставок, если предположить, что указанный класс на самом деле выполняет их асинхронно. Что же касается массовых вставок и параллельной обработки, то интересно обратиться к Inside Dynamics AX 2012:
Цитата:
Если среда времени выполнения Microsoft Dynamics AX обнаруживает, что достаточное для формирования пакета количество записей было добавлено в объект RecordInsertList, то записи упаковываются, передаются на сервер базы данных и вставляются в индивидуальном порядке в требуемую таблицу. Данная проверка выполняется при вызове метода add. Когда из прикладной логики вызывается метод insertDatabase, то с использованием того же механизма вставляются оставшиеся записи.
Использование данных классов вместо сценария с использованием оператора while select дает следующее преимущество: выполняется меньшее количество обращений AOS к базе данных, поскольку одновременно отправляются несколько записей. Однако число операторов INSERT на уровне базы данных остается таким же.
Т.е. с одной стороны, явно говорится, что никакого волшебства нет, и записи вставляются по одной, но в СУБД они якобы попадают "пакетом" - возможно, генерится один запрос с кучей insert'ов. С другой стороны, говорится о том, что insertDatabase() использует тот же механизм вставки записей, что и метод add(), а это по идее снижает шансы на то, что add() выполняет вставку асинхронно.