[Digikam-users] Any thoughts on RAM needs?

Jean-Francois jean-francois.rabasse at wanadoo.fr
Tue Sep 13 13:10:02 BST 2011

On Tue, 13 Sep 2011, Rinus Bakker wrote:

> I was suspicious about the db being broken and was hoping for that (it can
> be fixed) and was fearing that (it cause an awfull lot of work)
> Putting the answers of Gilles and Remco together makes me even more
> suspicious about that scenario.
> That´s why I came with this question a while ago:
> I suppose that the db becomes more and more messy by adding, removing and
> readding etc etc, I wonder if someone knows if and if, how it is possible to
> optimize the db in order to have quicker search capabillity.
> A few filtering actions can make it quite unresponsive.

Good guess. All databases systems, be it SQLite, MySQL, Oracle, 
PostgreSQL, etc., get messy and fragmented as time goes by.
And that's why all database software provide a "vacuum" function, to do
cleanup tasks, reorganize tables and indexes, remove deleted tuples, etc.

It's a good practice to do such cleanup from time to time.
(Time to time may be every night for huge professional databases, or
once or twice a month for a user level database as digiKam DB.)

> and with this question:
> Does anyone know if this
> cleanup_digikamdb.1 by Andy Clemens
> is still valid to use with current digikam db?
> And any ideas what to do with that cleanup_digikamdb.1 file?

Cleanup_digikam doesn't nothing else than issuing "vacuum" commands.
The extra is that it checks that no active DB connection is running,
because it's not possible to do vacuum tasks while an application is
connected and working with the database.

But you don't need cleanup_digikam if you have the SQLlite3 package
installed, just use the sqlite3 command line client program.

- Close any running digiKam program
- Go into your digiKam base directory and backup your digikam4.db file.
- From command line run the following :
   sqlite3 -line digikam4.db 'vacuum;'

That's all and that's mostly what cleanup_digikam does.

You can also run some checks, e.g. :
   sqlite3 -line digikam4.db 'pragma integrity_check;'

and, hopefully, get a message :
   integrity_check = ok

Tuning a database performance is a bit more complicated because you need
to know what kind of performance parameter may be affected.
SQLite3 has a number of tuning parameters, see the documentation :

Maybe, moving temporary storage from disk to computer memory may help
about performance :
   sqlite3 -line digikam4.db 'pragma temp_store = 2;'
(That's the only "tuning" I did on my digikam DB)

Note that doing such DB maintenance tasks with the SQLite3 command line
program is independant of such or such digiKam version. It's *the* program
packaged with *the* sqlite library used by digiKam. So it knowns perfectly
well what should a SQLite db look like, what is correct or not.
If integrity checks are ok, you can trust that.



More information about the Digikam-users mailing list