23.11.2005, 15:02 | #1 |
----------------
|
Есть ли выигрыш от RecordInsertList
Дает ли RecordInsertList какое-нибудь увеличение производительности?
Откуда вопрос - Смотрю в SQLProfiler и вижу все тот же набор INSERT INTO. |
|
23.11.2005, 15:15 | #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).
|
|
23.11.2005, 15:27 | #3 |
Участник
|
По идее это и есть
insert_recordset, только с ним удобно работать. Вставляет все сразу - то есть прирост существенный. |
|
23.11.2005, 15:44 | #4 |
----------------
|
to _AnK_ нет не мой. Это точно SQL таблица и точно нет insert.
Единственное отличие, которое я увидел, при использовании RecordInsertList RecId выделяется бОльшими кусками (47) по сравнению с циклическим doInsert (24). Тем не менее, выигрыш на простейшей таблицы в 2 раза.... непонятно to kashperuk На счет удобства можно поспорить |
|
23.11.2005, 15:48 | #5 |
Участник
|
а что вы конкретно подразумеваете под циклическим doInsert если можно?
|
|
23.11.2005, 15:58 | #6 |
----------------
|
PHP код:
|
|
23.11.2005, 16:00 | #7 |
Участник
|
Ну - так разница то есть -
в первом случае идет только одно обращение к БД - когда делается insertDataBase А во втором каждая строка по отдельности вставляется. |
|
23.11.2005, 16:06 | #8 |
----------------
|
Иван, о чем я и говорю, что ожидал увидеть 1 обращение к БД (хотя совершенно не представляю как это можно сделать на SQL), а вижу все те же 10000.
|
|
23.11.2005, 16:09 | #9 |
Участник
|
Хм. я честно говоря профайлером так никогда эту функцию и не смотрел. Тогда действительно странно.
Но в хелпе по RecordInsertList написано, что вставка идет именно единоразово. Я им верил - до сегодняшнего дня |
|
23.11.2005, 16:11 | #10 |
Участник
|
Может быть в первом случае инсерты выполняются асинхронно.
|
|
23.11.2005, 16:15 | #11 |
Участник
|
А что вы собственно ожидали увидеть? Что нибудь типа BULK INSERT?
__________________
Axapta v.3.0 sp5 kr2 |
|
23.11.2005, 16:16 | #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
|
|
23.11.2005, 16:25 | #13 |
----------------
|
AndyD, я ожидал увидеть чудо, но его там не оказалось... как обычно
Хотя, остался вопрос, если нет существенной разницы в исполнении вставки, то откуда прирост в 2 раза |
|
23.11.2005, 16:57 | #14 |
Модератор
|
Цитата:
Сообщение от Wamr
AndyD, я ожидал увидеть чудо, но его там не оказалось... как обычно
insert into myTable (..) select .. from #tempTable (для сиквела) похоже, снова что-то заоптимизировали надо будет проверить на 3.0 без сервиспаков
__________________
-ТСЯ или -ТЬСЯ ? |
|
23.11.2005, 17:03 | #15 |
Участник
|
Первое что бросилось в глаза - insertDatabase() идет в рамках транзакции. Попробовал стартовать транзакцию перед началом цикла вставки для doInsert() и коммитить после завершения цикла - время вставки уменьшилось в три раза.
__________________
Axapta v.3.0 sp5 kr2 |
|
24.11.2005, 18:34 | #16 |
Участник
|
У меня для вышеприведенного примера вообще разница вышла 1 к 15
|
|
24.11.2005, 18:56 | #17 |
----------------
|
leshy, какая версия Аксапты и какой sql-сервер?
|
|
24.11.2005, 19:08 | #18 |
Участник
|
Axapta 3.0 SP3
MSSQL 2000 SQL и АОС на одной машине (Ксеон 2х2,4Ггц) |
|
16.09.2013, 12:02 | #19 |
Участник
|
Добрый день!
Хотелось поднять эту тему! Кто-нибудь использует RecordInsertList для массовой вставки строк для повышения производительности в MS DAX 2009? Помогает? |
|
16.09.2013, 12:50 | #20 |
Участник
|
Помогает и еще как.
Cтандартное приложение тоже использует. Cм. например вставку в salesParmTable/salesParmLine |
|
|
За это сообщение автора поблагодарили: Just_smile (1). |
Теги |
recordinsertlist, recordsortedlist |
|
|