cleanup_digikamdb will cleanup and optimize the digiKam database file. This will, in most cases, lead to
a smaller database file size and an increased access speed, because unneeded elements are removed from
the database and data is optimized.
The program will make sure that no instance of digiKam is running, because it is more safe to have no
database access during the optimization process. It then will read the digiKam configuration file and de‐
termine the database location. In a final step the database will be optimized by invoking the sqlite
command 'VACUUM;' on it. If more then one database is found in this location, cleanup_digikamdb will op‐
timize every database found in this path and below.
For further explanation, see the following description of the VACUUM command from the sqlite3 website:
When an object (table, index, or trigger) is dropped from the database, it leaves behind empty space.
This empty space will be reused the next time new information is added to the database. But in the mean‐
time, the database file might be larger than strictly necessary. Also, frequent inserts, updates, and
deletes can cause the information in the database to become fragmented - scrattered out all across the
database file rather than clustered together in one place.
The VACUUM command cleans the main database by copying its contents to a temporary database file and re‐
loading the original database file from the copy. This eliminates free pages, aligns table data to be
contiguous, and otherwise cleans up the database file structure.