[Yum-devel] Sqlite performance + tuning
seth vidal
skvidal at linux.duke.edu
Wed Mar 21 14:34:56 UTC 2007
On Wed, 2007-03-21 at 09:26 +0100, Florian Festi wrote:
> seth vidal wrote:
> > On Mon, 2007-03-19 at 17:29 +0100, Florian Festi wrote:
> >> Hi!
> >>
> >> As yum now also resolves only on the xml/sqlite data some of our results
> >> might interesting for the yum development, too.
> >>
> >> It turned out that there where no indices in the sqlite database for some of
> >> the common use cases:
> >>
> >> returnPrco() in sqlitesack.py:
> >> CREATE INDEX pkgprovides ON provides (pkgKey)
> >> CREATE INDEX pkgrequires ON requires (pkgKey)
> >> CREATE INDEX pkgconflicts ON conflicts (pkgKey)
> >> CREATE INDEX pkgobsoletes ON obsoletes (pkgKey)
> >>
> >> Those could be handy if the YumSqlitePackageSack.searchFiles() would try to
> >> make direct use of those columns:
> >> CREATE INDEX filenames ON files (name)
> >> CREATE INDEX dirnames ON filelist (dirname)
> >>
> >> I doubt that this will give any visible improvements with the current
> >> depsolver as it is currently hidden by other problems but as the other
> >> problems will get fixed the difference will increase. With our own resolver
> >> the time needed for resolving an "install *" on FC6 + extras + updates (6580
> >> packages) dropped from 10 to 3 Minutes.
> >>
> >> As there are plans to directly ship the sqlite dbs insted of the XML
> >> metadata, it might be worth checking if it is better to create the indices
> >> on the client side (sorry, didn't any checks on myself yet).
> >>
> >> It also turned out that if any quadratic behavior and looping over files is
> >> avoided resolving is reasonably fast.
> >
> > How much bigger do these indexes make the sqlite db files?
>
> FC6 primary.xml.gz.sqlite
> -rw-r--r-- 1 ffesti ffesti 6289408 Mar 21 09:18 core
> -rw-r--r-- 1 ffesti ffesti 7028736 Mar 21 09:17 core.index
> -rw-r--r-- 1 ffesti ffesti 9871360 Mar 21 09:18 extras
> -rw-r--r-- 1 ffesti ffesti 11011072 Mar 21 09:17 extras.index
> -rw-r--r-- 1 ffesti ffesti 4164608 Mar 21 09:18 updates
> -rw-r--r-- 1 ffesti ffesti 4686848 Mar 21 09:17 updates.index
>
> -rw-r--r-- 1 ffesti ffesti 1441465 Mar 21 09:18 core.bz2
> -rw-r--r-- 1 ffesti ffesti 1577672 Mar 21 09:17 core.index.bz2
> -rw-r--r-- 1 ffesti ffesti 2178462 Mar 21 09:18 extras.bz2
> -rw-r--r-- 1 ffesti ffesti 2393192 Mar 21 09:17 extras.index.bz2
> -rw-r--r-- 1 ffesti ffesti 887487 Mar 21 09:18 updates.bz2
> -rw-r--r-- 1 ffesti ffesti 985659 Mar 21 09:17 updates.index.bz2
>
> So quite exactly 10% bigger. But we can create the indices on the client
> side if we want to save the bandwidth. Creating the indices shouldn't be
> that expensive.
If you have some example code to make the indexes on the fly I'll give
it a run on the XO and see how bad it really ends up being.
-sv
More information about the Yum-devel
mailing list