On 3 Oct 2016, at 10:18, Luca Ferrari wrote: > in one of my application I use a sqlite3 database as a log of > activity. As you can imagine the file grows as time goes by, so I'm > figuring I've to substitute it with an empty one once a good size is > reached. > What is the right way to do it without having to stop the application > (and therefore without knowing when a new I/O operation will be > issued)? > Does sqlite3 provide some facility that could come into help (e.g., > connected databases)?
I think that your application must be responsible for this, not sqlite3. I don't know about a "right" way to do it, but I can describe what I did in a similar situation. In my case it seemed natural to start a new database every day, at 00:00 UTC. Hourly, weekly, monthly, or according to a size-related criterion may suit your situation better. Each time the application has something to write to the database, it must calculate the file name to use. If this has changed since the last time, the application must close the current database file and create a new one. For example, when the date changes from 2016-10-02 to 2016-10-03, it might be time to do this. Alternatively, the application could track the number of entries in the database and change over when the count reaches 100,000 or whatever. You need to have some idea how long, or how many entries, it takes to reach your chosen file-size limit. When reading the database, your application will need to identify and open as many files as necessary so as to avoid ignoring relevant data. I hope this helps. Niall O'Reilly _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users