![]()
ACEDB Version 4_8
User Guide To getting the best performance with ACEDB
Originally written by
Ed Griffiths <edgrif@sanger.ac.uk>, March 2000Background
Subject: Re: how to make acedb fly most important is to run the aceserver on a LOCAL disk not nfs mounted and not on a RAID actually LINUX gives impressive results because of its excellent disk caching ===== now aceperl is memory intensive and best is to run it on a separate machine so you do not swap out aceserver swapping bits of aceperl is ok, this just slws down some clients ====== reading a big acefile is done in chuncks and should not too much degrade the system the worst case is some sort of queries what i recommend for higehr performances is to index as many tags as possible my most recent code indexes all tags, that costs just a couple of Mb of ram for the worm database and accelerates many requests ==== no task is really cpu intensive, we are really io bound so best is to have very fast disk, and a large ram, like 512 M so the disks are really cached in ram ==== i can send you the indexing fix for ace.4_7 if you wish just 2 lines to edit in wnq/bindex.c than read-models static void bIndexRegisterSecondaryTag(OBJ obj, int cc, BS bs, KEY masterTag) { if(!bs) return ; if (bs->key == _UNIQUE) { bIndexRegisterSecondaryTag(obj, cc, bs->right, masterTag) ; return ; } if (bs->key == _XREF && bs->right) { bIndexRegisterSecondaryTag(obj, cc, bs->right->right, masterTag) ; return ;} if (class(bs->key) || bs->key < _Date) return ; /* break on values */ if (bs->down) bIndexRegisterSecondaryTag(obj, cc, bs->down, masterTag) ; /* no condition, just index every tag */ masterTag = bs->key ; the fix is to remove the if which used to condition the line masterTag = bs->key ; then read-models -index // forces reindexing
ACEDB Version 4_8
Ed Griffiths <edgrif@sanger.ac.uk> Last modified: Tue Feb 6 13:21:35 GMT 2001