Somewhere I can't find again.
There are several pages on how it all works:
http://sqlite.org/faq.html#q7 http://sqlite.org/lockingv3.html
"ALTER TABLE To change a table you have to delete it (saving its contents to a temporary table) and recreate it from scratch."
This isn't good is it? I'm going to be indexing all files installed by a package manager . . . I'll be altering large tables quite frequently.
Alter table is how you change which columns are preset in a table. It is not about changing the rows. The former is a relatively rare thing.
I would strongly recommend you read almost all of the documentation on http://sqlite.org/docs.html such as
http://sqlite.org/faq.html#q13
Am I trying to solve a problem that I shouldn't be solving with SQLite?
SQLite is in fact perfect for what you are trying to do as it doesn't require a functioning network nor does it have a compulsory layer of authentication and access control.
http://www.sqlite.org/cvstrac/wiki?p=WhenToUseSqlite
MySQL seems to take ~6M of memory to run
Your numbers are meaningless. The databases consist of an amount of code (there is quite a bit more in MySQL) and information they have loaded from the database. RAM is used as a cache/subset of the on disk file. There are various places you can tune the various products. Here is how you do it with SQLite (cache_size):
http://sqlite.org/pragma.html#modify
itself. I'd imagine running *SQL over network would be slow and highly unstable if there was a disaster.
Section 6 at http://sqlite.org/lockingv3.html describes what the integrity
issues are with networked filesystems (ie if the OS doesn't do the
various system calls in the same way when going to a network filesystem).
Latency will also get you. See the last paragraph of
http://www.sqlite.org/cvstrac/wiki?p=WhenToUseSqlite
Roger