SQLite manages an on-disk data structure called "freelist". The freelist is used to track free pages in the database.
The head of the freelist is stored in page 0. Each page allocation/release will write to page 0, and conflict with every other concurrent transaction. This is not good for concurrency.
SQLite manages an on-disk data structure called "freelist". The freelist is used to track free pages in the database.
The head of the freelist is stored in page 0. Each page allocation/release will write to page 0, and conflict with every other concurrent transaction. This is not good for concurrency.
We should emulate a freelist instead.