Pocket PC SQL Ce Processing out of memory issues

  • Running into an issue where i run out of memory on the pocketpc while trying to do a full sync (2way) between the pocketpc and a server.

    It would seem for a 64mb ipaq only about 200,000 changes can be downloaded from the publisher..it also means we can get our full database onto a pocketpc (600mb db's)

    Is it possible to change where the processing is occurring on the pocketpc, it would seem this is where the processing is occurrring, i was think of getting the agent to run at the publisher but not sure if this would fix the problem..how have other tackled this issue? where too many changes cause memory issues on the pocketpc..if at all...ive tried googleing and microsofting the memory issues to no avail...

    Thanks for any insight you can provide..

    Regards


    ------------------------------
    Life is far too important to be taken seriously

  • This was removed by the editor as SPAM

  • No answers here?  I'll add my $.02 and see what's up.

    I don't think it's entirely a matter of processing, on the PocketPC it is all about storage and the amount of space taken by the database file.  I don't believe that the PocketPC "downloads" all the changes then processes them, I thinks it's more like it walks through the changes and applies them one by one.  Same thing for upload, it walks the table and sees which records have been flagged as changed and sends each one up.  Most of the processing is occuring on the server already.

    From your message, I don't understand what size database you are trying to process.  600Mb database on the server?  If you have 64Mb on the Ipaq, that's all the space you have for file storage (including your database) and applications.  If your database file grows too much during synch, you are out of memory.

    Hope I can help.

    JR

  • Thanks for the reply

    actually we store the db on a SD card and the db is actually sitting pretty at about 200mb's now.. we have to partition the db's which is something im not too happy about.

    based on what i watch in the memory manager on the pocketpc, the memory on the ipaq goes down slowly but surely and then gets to a point and crashes...maybe it doesnt do the whole database in a hit but maybe it does a table in a hit.. either way it doesnt seem to do what you are suggesting..or maybe it does but the memory management on SQLCE is up the creek..

    we can get about 100,000 plus changes between sync's it seems to max out (memory wise) at about 200,000 - 300,000 odd changes.

    Hope this makes sense, im happy to elaborate where necessary.


    ------------------------------
    Life is far too important to be taken seriously

  • My error.  When using merge replication, the entire thing is one big transaction.  RDA on the other hand can be broken into individual transactions.

    What that means is that SQLCE is building a temporary database, in your case a very large one, of all the record changes that need to be committed to the database.  One option might be to relocate that temporary database (although if you are already filling the SD card this could still be a problem)

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sqlce/htm/_lce_sql_server_ce_temporary_database_705.asp

    The other option might be to not use merge replication and try to find a way to create your own synchronization process using RDA.  In reality, merge replication is just a bunch of triggers and views and store procedures that SQL builds for you.  You may be able to create a simpler and lighter version yourself.

    When you talk about 100,000 transactions, do you mean on the CE side or the server side?

    JR

  • Thanks for confirming my suspicions with how it works..i think i will try relocating the temp db if i can do that to the SD card that will work, most of the dbs we have are between 200 - 600 mbs, so a temp db with the changes i would think would be larger than that again

    i might need to look into RDA further..

    the transactions are on the server side..usually the result of some bulk update transactions that occur in the server.. this is another part im looking at reducing in order to reduce the number of transactions created.

    thanks again for the info...much appreciated...

    More info as abve -> it seems that an record is called an update even if you update the value to itsself..unfortunately that what some of the code on the server is doing.


    ------------------------------
    Life is far too important to be taken seriously

Viewing 6 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic. Login to reply