6. September 2011 21:12
7. September 2011 08:58
AndreRoessling hat geschrieben:Hallo,
könnt Ihr mir einen Tipp zur Geschwindigkeitsoptimierung im CC geben?
- in größeren Mandanten werden im Durchschnitt täglich 250.000 Abrechnungen verarbeitet (ca. 1,5 h Buchungszeit), in Summe kommen täglich mehrere Millionen Buchungen zusammen.
AndreRoessling hat geschrieben:Problem:
- in den Abrechnungsdaten (50 bis 300.000 Datensätze) befinden sich neuerdings Einzelbelege mit bis zu 22.000 Datensätzen – dies führt zum Zusammenbruch der Performanz und einer immensen Vergrößerung des Transaktionsprotokolls
AndreRoessling hat geschrieben:Das Problem ist die Performanz. Im Rahmen der täglichen Verarbeitung der Abrechnungen müssen auch Belege mit bis zu 22.000 Zeilen in einem Zeitfenster von max. 1 - 2 Stunden realisierbar sein.
7. September 2011 11:15
Codeunit 80 before:
PROCEDURE TestGetShipmentPPmtAmtToDeduct(SalesHeader : Record "Sales
Header";SalesLine : Record "Sales Line")
TempSalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
TempSalesLine.SETRANGE("Document No.",SalesHeader."No.");
IF NOT TempSalesLine.FIND('+') THEN
EXIT;
TempSalesLine.SETFILTER(Quantity,'>0');
TempSalesLine.SETFILTER("Qty. to Invoice",'>0');
TempSalesLine.SETFILTER("Shipment No.",'<>%1','');
Codeunit 80 after:
PROCEDURE TestGetShipmentPPmtAmtToDeduct(SalesHeader : Record "Sales
Header";SalesLine : Record "Sales Line")
TempSalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
TempSalesLine.SETRANGE("Document No.",SalesHeader."No.");
TempSalesLine.SETFILTER(Quantity,'>0');
TempSalesLine.SETFILTER("Qty. to Invoice",'>0');
TempSalesLine.SETFILTER("Shipment No.",'<>%1','');
TempSalesLine.SETFILTER("Prepmt. Line Amount",'<>0'); <- New filter
IF TempSalesLine.isempty THEN <- moved line
EXIT; <- moved line
Codeunit 90 before:
PROCEDURE TestGetRcptPPmtAmtToDeduct(PurchHeader : Record "Purchase
Header";PurchLine : Record "Purchase Line")
TempPurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
TempPurchLine.SETRANGE("Document No.",PurchHeader."No.");
IF NOT TempPurchLine.FIND('+') THEN
EXIT;
TempPurchLine.SETFILTER(Quantity,'>0');
TempPurchLine.SETFILTER("Qty. to Invoice",'>0');
TempPurchLine.SETFILTER("Receipt No.",'<>%1','');
Codeunit 90 after:
PROCEDURE TestGetRcptPPmtAmtToDeduct(PurchHeader : Record "Purchase
Header";PurchLine : Record "Purchase Line")
TempPurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
TempPurchLine.SETRANGE("Document No.",PurchHeader."No.");
TempPurchLine.SETFILTER(Quantity,'>0');
TempPurchLine.SETFILTER("Qty. to Invoice",'>0');
TempPurchLine.SETFILTER("Receipt No.",'<>%1','');
TempPurchLine.SETFILTER("Prepmt. Line Amount",'<>0'); <- New filter
IF TempPurchLine.ISEMPTY THEN <- moved line
EXIT; <- moved line
7. September 2011 17:05
8. September 2011 08:38
holger1076 hat geschrieben:Hallo,
das Problem kommt mir bekannt vor. Es gab zwar nicht ganz soviele Zeilen zum Buchen (ca. 5000) aber nach Update auf NAV2009SP1 CC gabs das Problem das plötzlich diese Buchungen statt Minuten Stunden dauerten.
8. September 2011 08:52
Patrick Ringert hat geschrieben:Hallo Holger,
hast Du zufällig den KB Artikel dazu?
winfy hat geschrieben:Hallo Holger auch 5.000 Zeilen pro Einzelbeleg? Kommt das bei den Kunden häufiger vor? Für mich klingt das irgendwie atypisch.
mfg,
winfy
9. September 2011 17:25
10. September 2011 15:20
12. September 2011 08:29
12. September 2011 11:00
JanGD hat geschrieben:Ab bestimmten Datengrößen/-mengen empfiehlt sich SQLPerform zu kontaktieren. Die sind auf solche Szenarien spezialisiert. U.a. mit hoch SQL optimierten Buchungsroutinen.
12. September 2011 11:20
Freestyler hat geschrieben:Ist SQL-Perform die Firma von Jörg Stryk, wenn ich fragen darf? Denn bisher habe ich diesen Namen noch nicht gelesen...
12. September 2011 12:13