...feel the spirit of Microsoft Dynamics AX RSS 2.0
 Wednesday, July 04, 2007

Microsoft Dynamics AX bietet eine performante Möglichkeit viele Datensätze einzufügen. Hierzu wird die Klasse RecordInsertList verwendet.

RecordInsertList recordList;
CustTable custtable;
;

recordList= new RecordInsertList(tableNum(custtable));

while
{
//TODO: Datensätze erzeugen ohne insert aufzurufen

recordList.add(custtable); //Datensatz der Liste übergeben
}

recordList.insertDatabase();// Datensätze einfügen

Hierbei werden die Datensätze nicht mehr sofort in die Datenbank geschrieben werden, sondern im RecordListInsert Buffer lokal zwischengespeichert. Die dort enthaltenen Datensätze werden spätestens beim Aufruf der Methode insertDatabase() -das Einfügen der Datensätze wird hier vom Kernel gesteuert, der einen geeigeneten Zeitpunkt zum Einfügen auswählt- in die Datenbank geschrieben.

Bei meinem Versuch auf einem VirtualPC habe ich eine Geschwindigkeitsvorteil von ca. 25% erzielt.

Im AXforum.info (eines der größten Dynamics Foren) kann man noch einen Testjob finden, der deutlich macht, was an Zeit eingespart werden kann, wenn mit RecordInsertList gearbeitet wird.

Update

Bei der Instanzierung gibt es noch optionale Parameter wie

  • Insert Methode der Tabelle überspringen [Default=false]
  • Datenbanklog überspringen [Default=false]
  • Alerts überspringen [Default=false]
  • AOS Validierung überspringen [Default=false]

Ist bei der aktuellen Tabelle einer dieser Punkte (Insert Methode, Datenbanklog...) vorhanden, müssen diese dann mittels der Parameter übersprungen werden, sonst wird aus dem Bulk-Insert wieder ein Single-Record-Insert!

Vielen Dank an SebDra für diese Informationen!
Wednesday, July 04, 2007 10:10:54 PM (Mitteleuropäische Zeit, UTC+01:00)  Mathias Füßler  #    Comments [2] - Trackback


Wednesday, July 04, 2007 8:31:07 PM (Mitteleuropäische Zeit, UTC+01:00)
die RecordInsertList hat optionale Parameter bei der Instanzierung.
Es muss zusaetzlich angegeben werden, ob
die Insert-Methode der Tabelle geskippt wird
das Database-Log geskippt wird
die Alerts geskippt werden
die AOS-Validation geskippt wird
default ist jeweils NO, also Insert-Methode (wenn vorhanden) ausfuehren, Datenbank-Log
und Alerts beruecksichtigen, ...
Sollte in einem dieser Faelle etwas hinterlegt sein (eine Insert-Methode auf der Tabelle,
ein Datenbank-Log oder ein Alert-Eintrag fuer diese Tabelle, eine AOS-Validation-Methode),
so wird aus dem Bulk-Insert wieder ein Single-Record-Insert !!!
(also kein Performance-Gewinn)
Thursday, July 05, 2007 7:56:18 PM (Mitteleuropäische Zeit, UTC+01:00)
Hallo Sebastian,

vielen Dank für diese wertvolle Information.
Ich habe den Eintrag überarbeitet und deine Infos angefügt.
Comments are closed.


Translate
Über/Kontakt

     







© Copyright 2012 Axel Kühn
Sign In
Subscribe this blog
Blogroll
 Arijit Basu
 Axapta Blog
Blog around Microsoft Business Solutions Axapta by Helmut Wimmer
 BlaBlubBlog
Der Blog von Kai Gloth
 Dave Bowles
 Dick Wenning
Ax(apta) start pages
 Fred Shen
 Harish Mohanbabu
 jinx´s AX Blog
Everything about Microsoft Dynamcis AX
 Lars Keller
All about .NET, VSTS, VSTO and more
 Max Belugin
 TaReMoTi Blog
Der Blog von Karsten Döring
Archiv
<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910
Statistik
Gesamte Posts: 137
Dieses Jahr: 0
Dieser Monat: 0
Diese Woche: 0
Kommentare: 49





All Content © 2012, Axel Kühn
DasBlog theme 'Business' created by Christoph De Baene (delarou)