I use an in-memory sqlite database for some queueing of stuff between multiple threads and therefore we have a lot of writes, reads and deletes. But there are never more that a few KB in the database at a time. Now some customers complain memory usage after longer usage and I wonder if the in-memory databases of sqlite are also affected by fragmentation? Is there the need to VACUUM in-memory-databases, too?
This database is utilized by multiple threads and I can not lock all of them for some VACUUM. Or do all the connections simply wait until VACUUM is finished and then come back as usual? And what happens if another thread is just doing a transaction while I start VACUUM from my thread?
Side-Note: I already check for memory leaks in my program, but this is another option I want to consider because valgrind does not find any issues for the moment. And such sqlite storage memory usage is, of course, not a memory leak in traditional way.