Reading whole db at startup (was Re: String lengths in the SQL backend)

Phil Longstaff plongstaff at rogers.com
Thu Nov 20 18:38:14 EST 2008


On November 16, 2008 02:01:05 pm Derek Atkins wrote:
> Phil Longstaff <plongstaff at rogers.com> writes:
> >> Wait, the ENTIRE contents are read in?  Historically only "necessary
> >> data" was read in.  That would be the Accounts and Commodities from
> >> the main CoA.  The transactions were all loaded on demand.
> >
> > Yes.  I wanted to only read "necessary data".  However, my (admittedly
> > incomplete) knowledge of the engine led me to the conclusion that parts
> > of th engine assume that all data is present.  I couldn't get the account
> > tree to show correct values, for example, unless all splits for an
> > account were present.  I ended up just loading the whole database into
> > memory.
>
> There should not be any dependence on reading in all the data from the DB.
> The old PG Backend certainly did not, and it worked fine.  I think it got
> around it by having checkpoints for things like running account balances,
> so you only need to load "current" transactions, not all of them.
>
> If you're loading all data all the time then the only benefit to the DB
> backend over the XML backend is save-on-commit.

I was just looking at the pg backend code again.  In single user mode, it 
*did* read all of the transaction data at startup time.

Phil


More information about the gnucash-devel mailing list