500k records for 2 tables (total 1M) on SQLite, heavy update scenario...... 
I really hope you'll manage that outside the normal web environment to 
avoid timeout issues that are likely to happen.
I'll try to reproduce though.

On Tuesday, May 21, 2013 6:35:14 PM UTC+2, Simon Ashley wrote:
>
> Experiencing memory leaks when updating 500k records using either of the 
> following routines. 
> Quite reproducible, and running tests on both windows 7 and 2008 servers 
> (servers with 8 and 12G ram)
> Initial speed tests suggest 100 recs per second, but routines fail to 
> complete after 3 hours. 
> Have tried with and without caching.
> Using current trunk and stable versions.
>
> Currently exporting the entire db, deleting the database and reimporting 
> (have tried rebuilds through SQLite Manager).
> If that doesn't work, looking at swapping databases, but before we do that 
> ... Any comments or ideas?
>
> Wondering if the initial selects are too big and need to be split?
> (haven't tried caching to the disk yet)
> If that is the issue, are there any recommended strategies?
>
>
> def update_TABLE_A_1():
>     import datetime
>     a = datetime.datetime.now()
>     q = db1(db1.TABLE_A.ITEM_ID == db1.TABLE_B.id).select(cache=(cache.ram
> ,600),cacheable=True, limitby=(0,1000000)) #limitby merely to test speed 
> and ranges, tried with and without caching
>     for row in q:
>         db1.TABLE_A.update_or_insert(db1.TABLE_A.ITEM_ID == row.TABLE_B.id
> , FIELD_A1 = row.TABLE_B.FIELD_B2, FIELD_A2 = row.TABLE_B.FIELD_B3,FIELD_A3 
> = row.TABLE_B.FIELD_B4, FIELD_A4 = row.TABLE_B.FIELD_B5)
>     b = datetime.datetime.now()
>     b1 = b-a
>     return str(b1)
>
>
> def update_TABLE_A_2():
>     import datetime
>     a = datetime.datetime.now()
>     q = db1(db1.TABLE_A > 0).select(limitby=(0,1000000))
>     for row in q:
>         q1 = db1(db1.TABLE_B == row.id).select(cache=(cache.ram,600),
> cacheable=True, limitby=(0,1))            
>         row.update_record(FIELD_A = q1[0].FIELD_B1, FIELD_B = q1[0].
> FIELD_B2, FIELD_C = q1[0].FIELD_B3, FIELD_D = q1[0].FIELD_B4)
>     b = datetime.datetime.now()
>     b1 = b-a
>     b2 = b1.seconds/1000
>     return (str(b1), str(b2))
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to