![]() |
#1 |
----------------
|
![]()
Дает ли RecordInsertList какое-нибудь увеличение производительности?
Откуда вопрос - Смотрю в SQLProfiler и вижу все тот же набор INSERT INTO. |
|
![]() |
#2 |
Участник
|
Цитата:
The array insert operation automatically falls back to classic record-by-record inserts when non-SQL based tables are used (e.g. temporary tables), or the insert() method on the table is overloaded (unless explicitly discarded).
|
|
![]() |
#3 |
Участник
|
По идее это и есть
insert_recordset, только с ним удобно работать. Вставляет все сразу - то есть прирост существенный. |
|
![]() |
#4 |
----------------
|
to _AnK_ нет не мой. Это точно SQL таблица и точно нет insert.
Единственное отличие, которое я увидел, при использовании RecordInsertList RecId выделяется бОльшими кусками (47) по сравнению с циклическим doInsert (24). Тем не менее, выигрыш на простейшей таблицы в 2 раза.... непонятно to kashperuk На счет удобства можно поспорить ![]() |
|
![]() |
#5 |
Участник
|
а что вы конкретно подразумеваете под циклическим doInsert если можно?
|
|
![]() |
#6 |
----------------
|
PHP код:
|
|
![]() |
#7 |
Участник
|
Ну - так разница то есть -
в первом случае идет только одно обращение к БД - когда делается insertDataBase А во втором каждая строка по отдельности вставляется. |
|
![]() |
#8 |
----------------
|
Иван, о чем я и говорю, что ожидал увидеть 1 обращение к БД (хотя совершенно не представляю как это можно сделать на SQL), а вижу все те же 10000.
|
|
![]() |
#9 |
Участник
|
Хм. я честно говоря профайлером так никогда эту функцию и не смотрел. Тогда действительно странно.
Но в хелпе по RecordInsertList написано, что вставка идет именно единоразово. Я им верил - до сегодняшнего дня ![]() |
|
![]() |
#10 |
Участник
|
Может быть в первом случае инсерты выполняются асинхронно.
|
|
![]() |
#11 |
Участник
|
А что вы собственно ожидали увидеть? Что нибудь типа BULK INSERT?
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#12 |
Участник
|
Цитата:
Сообщение от kashperuk
Но в хелпе по RecordInsertList написано, что вставка идет именно единоразово. Я им верил - до сегодняшнего дня
![]() ![]() Написано так: Цитата:
It should, however, be emphasized, that records are inserted whenever the kernel finds the time appropriate, but no later than the call to insertDatabase
|
|
![]() |
#13 |
----------------
|
AndyD, я ожидал увидеть чудо, но его там не оказалось... как обычно
![]() Хотя, остался вопрос, если нет существенной разницы в исполнении вставки, то откуда прирост в 2 раза |
|
![]() |
#14 |
Модератор
|
Цитата:
Сообщение от Wamr
AndyD, я ожидал увидеть чудо, но его там не оказалось... как обычно
insert into myTable (..) select .. from #tempTable (для сиквела) похоже, снова что-то заоптимизировали ![]() надо будет проверить на 3.0 без сервиспаков
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#15 |
Участник
|
Первое что бросилось в глаза - insertDatabase() идет в рамках транзакции. Попробовал стартовать транзакцию перед началом цикла вставки для doInsert() и коммитить после завершения цикла - время вставки уменьшилось в три раза.
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#16 |
Участник
|
У меня для вышеприведенного примера вообще разница вышла 1 к 15
|
|
![]() |
#17 |
----------------
|
leshy, какая версия Аксапты и какой sql-сервер?
|
|
![]() |
#18 |
Участник
|
Axapta 3.0 SP3
MSSQL 2000 SQL и АОС на одной машине (Ксеон 2х2,4Ггц) |
|
![]() |
#19 |
Участник
|
Добрый день!
Хотелось поднять эту тему! Кто-нибудь использует RecordInsertList для массовой вставки строк для повышения производительности в MS DAX 2009? Помогает? |
|
![]() |
#20 |
Участник
|
Помогает и еще как.
Cтандартное приложение тоже использует. Cм. например вставку в salesParmTable/salesParmLine |
|
|
За это сообщение автора поблагодарили: Just_smile (1). |
Теги |
recordinsertlist, recordsortedlist |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|