Hi Maverick,

The problem I'm still facing since I started this issue, was that when
  you have to process millions of records the system is getting slower
in processing these records exponentially. This means that when the
process is doing thousands of records in het first minutes, it will go
 to a few records (or less !) per minut at the end. 

When doing a commit after e.g. each 1000 records processed you have to
be very carefully with the code you are writing because  if you have a
situation like this : 

ttsbegin

begin while ....
   processing
   if ((processed mod 1000)==0)
      ttscommit
      ttsbegin
   ....
end while


If this kind of code is not processing a temp table in the while
selection the system loses focus on the file it is reading after the
commit and will restart the selection at the beginning again...
Strange but true, if you do this on a temp table everything works fine.

The only way to improve performance in processing these number of
records is to split up the processing in smaller sets of data. You can
try this also with e.g. journal postings. If you post 1 journal of
10000 entries it will take much longer than processing 10 journals of
1000 entries.

At this moment I'm still not sure if this is an Axapta or an SQL or a
link Axapta-SQL issue.

Regards,
Stefan



--- In Axapta-Knowledge-Village@yahoogroups.com, "Maverick"
<[EMAIL PROTECTED]> wrote:
>
> Thanks Kumar,
> 
> Since million of records to be updated. It may happen that runtime
memory will get full, and then wether it rollback all the update since
until then ttscommit was not called. What I found is, it takes too
much time. and several records are not updated at the end. 
> 
> And what type of cache to be use for the table. What do you
suggest(in this case)?
> 
> Maverick
> 
> 
>   ----- Original Message ----- 
>   From: kumar gaurav 
>   To: Axapta-Knowledge-Village@yahoogroups.com 
>   Sent: Friday, January 06, 2006 9:31 AM
>   Subject: Re: [Axapta-Knowledge-Village] Re: Performance
> 
> 
>   hi maverick,
> 
>   first of all ttscommit shd be called at the last of complete
update becuase it takes much more memory rather than the runtime
memory which you are talking ab't. The index should be the one which
shd consist the selection criteria field, and if is cluster one it is
the best situation. If the cashing is properly enabled than you will
get optimum speed. 
> 
>   Feel free to ask your furhter qeries if any.
> 
>   bye
> 
>   Maverick <[EMAIL PROTECTED]> wrote:
>     The process consist of a loop, doing updation on a table on
every record conditionally. And this is done several times. And table
consist of million of records.
> 
> 
>       ----- Original Message ----- 
>       From: Bayliss, Barry 
>       To: Axapta-Knowledge-Village@yahoogroups.com 
>       Sent: Tuesday, January 03, 2006 4:35 AM
>       Subject: RE: [Axapta-Knowledge-Village] Re: Performance
> 
> 
>        
>       Hello Maverick,
>        
>       Without more details on what you are doing, and how you have
implemented the task, it is very difficult to give you any extra
information.
>        
>        
>       Barry.
>        
>        
> 
>
--------------------------------------------------------------------------
> 
>       From: Axapta-Knowledge-Village@yahoogroups.com
[mailto:[EMAIL PROTECTED] On Behalf Of Maverick
>       Sent: Monday, 26 December 2005 9:10 PM
>       To: Axapta-Knowledge-Village@yahoogroups.com
>       Subject: Re: [Axapta-Knowledge-Village] Re: Performance
>        
>       Hi All,
>       I am also facing the same problem, I have some code which is
processing thousands of update on the table. There is only one process
doing all the updates. So nothing to be worry for several processes
doing updates on the same table.
>        
>       What are the ways to optimize the process. Please do tell me
all the points to be taken care in the CODE,TABLE and in the SQL.
>        
>       Like:
>       When should TTSCOMMIT be done. If it is done after every
update it will take too much time. And if it is after thousands of
update, it takes runtime memory. 
>        
>       What about Index, should it be primary OR cluster. 
>        
>       What properties of SQL Server should be set for better updation.
>        
>       If you would like to put light on any other point, it willl be
very helpful.
>        
>       Thanks
>       Maverick
>         ----- Original Message ----- 
>         From: Varden Morris 
>         To: Axapta-Knowledge-Village@yahoogroups.com 
>         Sent: Thursday, December 22, 2005 6:30 AM
>         Subject: RE: [Axapta-Knowledge-Village] Re: Performance
>          
>         Another thing I want to add just incase it was not taken
into consideration. You should but you OS, data file and log file on
seperate volumes. It is recommended to put the OS on a mirrored volume
(2 hard drives in a RAID 1 configuration), the log file on another
mirrored volume and the data file on a RAID 0+1 volume (Better over
RAID 5 for write intensive operations). This procedure will enahace
performance.
> 
>         "Bayliss, Barry" <[EMAIL PROTECTED]> wrote: 
> 
>         Yes, was referring to the sql transaction log.
> 
> 
>         Can you post your code?
> 
> 
>         Barry.
> 
>         -----Original Message-----
>         From: Axapta-Knowledge-Village@yahoogroups.com
>         [mailto:[EMAIL PROTECTED] On Behalf
Of Stefan
>         Capiau
>         Sent: Wednesday, 21 December 2005 6:19 PM
>         To: Axapta-Knowledge-Village@yahoogroups.com
>         Subject: [Axapta-Knowledge-Village] Re: Performance
> 
>         HI Barry,
> 
>         Are you talking about the sql transaction log, the
commitment control 
>         in Axapta ? 
> 
>         We have done tests with putting commitment round the entire
process 
>         and doing a commit after each 500 records. No big change in 
>         performance. 
> 
>         Regards, 
>         Stefan
> 
> 
> 
>         --- In Axapta-Knowledge-Village@yahoogroups.com, "Bayliss,
Barry" 
>         <[EMAIL PROTECTED]> wrote:
>         >
>         > Hello Stefan,
>         > 
>         > 
>         > I have previously come across a problem with a piece of
code running
>         > slower like this.  Turns out the problem was related to
the size of 
>         the
>         > transaction log generated by the process being run.  
>         > 
>         > 
>         > Have you placed the transaction log around the entire
batch, or each
>         > block of the batch?
>         > 
>         > 
>         > 
>         > Barry.
>         > 
>         > 
>         > -----Original Message-----
>         > From: Axapta-Knowledge-Village@yahoogroups.com
>         > [mailto:[EMAIL PROTECTED] On
Behalf Of 
>         Stefan
>         > Capiau
>         > Sent: Wednesday, 21 December 2005 7:19 AM
>         > To: Axapta-Knowledge-Village@yahoogroups.com
>         > Subject: [Axapta-Knowledge-Village] Re: Performance
>         > 
>         > Thanks for the reply!
>         > 
>         > We are running this process at night, and no other
processes are 
>         > active at that moment.
>         > 
>         > The strange thing is that when we divide the process into
batches 
>         of 
>         > a couple of thousand records to process, it doesn't matter
which 
>         > batch we process first. The first one launched is always
fast (just 
>         a 
>         > couple of minutes) the last one takes up to hours.
>         > We also looked at the disk queue time, but saw no strange
things. 
>         > Somehow it looks like the transactions are kept in memory
and are 
>         not 
>         > released after the process forcing the system to start
swapping to 
>         > disk.
>         > 
>         > At this time we can manage these runs by carefully
planning the 
>         > execution time, but in the near future we are also
planning on 
>         > uploading the complete customer database (+3000.000 !)
customers. 
>         As 
>         > it looks like now the system wil not be able to process these 
>         number 
>         > of transactions. 
>         > 
>         > During the next couple of days we will also try to closely
monitor 
>         > the sql server and see if changing settings will affect the 
>         process. 
>         > We also did a huge job on code improvements for
performance. I am 
>         > convinced it always can be better but I don't thing we
will gain 
>         much 
>         > at this stage by changing the code.
>         > 
>         > All extra hints are very much appreciated !
>         > 
>         > Regards, 
>         > Stefan
>         > 
>         > 
>         > 
>         > 
>         > 
>         > 
>         > 
>         > --- In Axapta-Knowledge-Village@yahoogroups.com, Varden
Morris 
>         > <[EMAIL PROTECTED]> wrote:
>         > >
>         > >   Hi Stefan
>         > >    
>         > >   There are countless ways in which performance may be
improved 
>         but 
>         > it depends on your specific situation.
>         > >    
>         > >   If you are selecting records for update in a
transaction you 
>         will 
>         > have objects (table, page. Record) locks for the tables
within the 
>         > transaction. It looks like you are running several clients
that are 
>         > competing for the same tables and resources. The first
client that 
>         > gets hold of the tables holds them for a while until the
process in 
>         > finished on that client then it releases them to the next
client in 
>         > the queue and so on until the entire process is finished.
That 
>         > explains why the jobs are not executed in parallel. 
>         > >    
>         > >   In a case like this I should think that using one
powerful 
>         server 
>         > (Batch Server) to process the entire job would give better 
>         > performance. When you use several clients this will lead
to a lot 
>         of 
>         > network trafficking that will reduce performance plus
clients are 
>         > waiting in line on each other. With a powerful server that
is in 
>         the 
>         > area of the database sever with high speed access to the
database 
>         you 
>         > can gain a lot of performance using a 2-tier client or
3-tier fat 
>         > client that will eliminate the latency between the client
and AOS 
>         (if 
>         > you are using an AOS). 
>         > >    
>         > >   You should also note that processing will be as slow
as the 
>         > slowest processor in the batch and database servers in
this case 
>         plus 
>         > the process will also be impacted by the speed of the
disks in both 
>         > computers. If the disk queue length for either computer is
above 2 
>         > you will have to upgrade the disk to a faster one to gain
better 
>         > performance. If the memory in any server is not adequate
you will 
>         > also end up with a lot of paging which is another downfall.
>         > >    
>         > >   Tuning your code is also another possibility to gain some 
>         > performance. This may also lead to the possibility of you
being 
>         able 
>         > to run more than one batch servers in parallel with
minimum object 
>         > (table, page. Record) locks.
>         > >    
>         > >   You should also ensure that your SQL Server is tuned for 
>         optimum 
>         > performance. If you are using more than 2G of memory you
should 
>         > enable AWE for SQL otherwise the server will only see and
use 2G.
>         > >    
>         > >   Hope this helps in some way.
>         > >    
>         > >   
>         > > Stefan Capiau <[EMAIL PROTECTED]> wrote:
>         > >   Thanks James, 
>         > > 
>         > > We have tried fooling around with the caching but no
effect. 
>         > > The process does the following, reading all customers,
looking at 
>         > the 
>         > > transactions (new table, mixture of financial and
logistical 
>         data) 
>         > > making a balance on the transactions and generating an
opening 
>         > > transaction in a new period.
>         > > 
>         > > During this process we do a lot of reading and
updating/writing 
>         on 
>         > > the same table. Can this be a problem ?
>         > > 
>         > > Regards, 
>         > > Stefan
>         > > 
>         > > --- In Axapta-Knowledge-Village@yahoogroups.com, "James
Flavell" 
>         > > <[EMAIL PROTECTED]> wrote:
>         > > >
>         > > > My first guess would be the SQL locking escalating to
a full 
>         lock 
>         > or
>         > > > something like that but I am no expert...which tables
are you
>         > > > updating/inserting?
>         > > > 
>         > > > Also no idea but could it be at the start data is read
into RAM 
>         > but 
>         > > later on
>         > > > when RAM is exhausted disk IO gets more and so things
slow 
>         down?  
>         > > Maybe
>         > > > there is some caching setting you can tone down when
running 
>         this 
>         > > job?
>         > > > 
>         > > > 
>         > > > 
>         > > > 
>         > > > -----Original Message-----
>         > > > From: Axapta-Knowledge-Village@yahoogroups.com
>         > > > [mailto:[EMAIL PROTECTED] On
Behalf Of 
>         > > Stefan Capiau
>         > > > Sent: 20 December 2005 20:43
>         > > > To: Axapta-Knowledge-Village@yahoogroups.com
>         > > > Subject: [Axapta-Knowledge-Village] Performance
>         > > > 
>         > > > 
>         > > > Hi all,
>         > > > 
>         > > > Each month we are running a procedure which is looking
at all 
>         > > customer and
>         > > > their transactions. We do updates and inserts in the
selected 
>         > > tables.
>         > > > 
>         > > > The database contains at this moment +300.000
customers and 
>         over 
>         > > 2.000.000
>         > > > transactions on the customers.
>         > > > 
>         > > > The problem we are facing at this moment is that the
job is 
>         > taking 
>         > > more and
>         > > > more time (exponential) as the customer database grows.
>         > > > 
>         > > > dividing the job into parts of e.g. 25.000 customers
gives the 
>         > > following
>         > > > results : 
>         > > > 
>         > > > The first 25.000 customers are processed in less than 3-4 
>         minutes 
>         > > The last
>         > > > 25.000 customers are processed in over 2 hours !!!
>         > > > 
>         > > > We are using an SQL2000 server. 
>         > > > 
>         > > > At this moment the complete process is taking over 12
hours to 
>         > > complete
>         > > > wheras it should be done withing 30-45 minutes (if we
look at  
>         > the 
>         > > first
>         > > > group of customers)
>         > > > 
>         > > > We already figured out that this is client independed.
If we 
>         run 
>         > 20 
>         > > batches
>         > > > of customers on 20 clients, the first clients takes a
couple of 
>         > > minutes
>         > > > whereas the last takes over 2 hours. 
>         > > > 
>         > > > Is this sounding familiar to somebody ?
>         > > > 
>         > > > 
>         > > > Stefan
>         > > > 
>         > > > 
>         > > > 
>         > > > 
>         > > > 
>         > > > 
>         > > > 
>         > > > Sharing the knowledge on Axapta. 
>         > > > Yahoo! Groups Links
>         > > >
>         > > 
>         > > 
>         > > 
>         > > 
>         > > 
>         > > 
>         > > Sharing the knowledge on Axapta. 
>         > > 
>         > > 
>         > > 
>         > >   SPONSORED LINKS 
>         > >         Business finance course   Business to business
finance   
>         > Small business finance     Business finance consultant  
Business 
>         > finance magazine   Business finance schools 
>         > >     
>         > > ---------------------------------
>         > >   YAHOO! GROUPS LINKS 
>         > > 
>         > >     
>         > >     Visit your group "Axapta-Knowledge-Village" on the web.
>         > >     
>         > >     To unsubscribe from this group, send an email to:
>         > >  [EMAIL PROTECTED]
>         > >     
>         > >     Your use of Yahoo! Groups is subject to the Yahoo!
Terms of 
>         > Service. 
>         > > 
>         > >     
>         > > ---------------------------------
>         > >   
>         > > 
>         > > 
>         > > 
>         > > 
>         > > 
>         > > Varden Morris 
>         > > Senior Developer 
>         > > WellPoint Systems Inc. 
>         > > 
>         > > (403) 444-5848 direct 
>         > > (403) 444-3900 main 
>         > > (403) 615-1604  cell
>         > > www.wellpoint.ca 
>         > > [EMAIL PROTECTED]
>         > > 
>         > > 
>         > > __________________________________________________
>         > > Do You Yahoo!?
>         > > Tired of spam?  Yahoo! Mail has the best spam protection
around 
>         > > http://mail.yahoo.com
>         > >
>         > 
>         > 
>         > 
>         > 
>         > 
>         > 
>         > 
>         > Sharing the knowledge on Axapta. 
>         > Yahoo! Groups Links
>         >
> 
> 
> 
> 
> 
> 
> 
>         Sharing the knowledge on Axapta. 
>         Yahoo! Groups Links
> 
> 
> 
> 
> 
> 
>          
>          
>         Varden Morris 
>         Senior Developer 
>         WellPoint Systems Inc. 
> 
>         (403) 444-5848 direct 
>         (403) 444-3900 main 
>         (403) 615-1604  cell
>         www.wellpoint.ca 
>         [EMAIL PROTECTED]
>         __________________________________________________
>         Do You Yahoo!?
>         Tired of spam? Yahoo! Mail has the best spam protection around 
>         http://mail.yahoo.com 
> 
> 
> 
>   Send instant messages to your online friends
http://in.messenger.yahoo.com 
> 
>   Send instant messages to your online friends
http://in.messenger.yahoo.com 
> 
>   Sharing the knowledge on Axapta.
>   Visit www.frappr.com/axapta for axapta friends. 
> 
> 
> 
> 
> 
>
------------------------------------------------------------------------------
>   YAHOO! GROUPS LINKS 
> 
>     a..  Visit your group "Axapta-Knowledge-Village" on the web.
>       
>     b..  To unsubscribe from this group, send an email to:
>      [EMAIL PROTECTED]
>       
>     c..  Your use of Yahoo! Groups is subject to the Yahoo! Terms of
Service. 
> 
> 
>
------------------------------------------------------------------------------
>






Sharing the knowledge on Axapta.
Visit www.frappr.com/axapta for axapta friends. 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/Axapta-Knowledge-Village/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to