in reply to Re^8: threads::shared seems to kill performance (Workaround).
in thread threads::shared seems to kill performance
An ADS cannot exist without a main file; and unlinking the main file will always delete the ADS; so I'm not sure what you are getting at here?
I asked the question on the sqlite mailing list; but besides getting the obvious reply -- "if the data persists it isn't an in-memory db"; Well d'uh! -- total silence. Probably there is noone with any windows knowledge on the list.
My suspicion is:
- When creating an in-memory db; they use directly mapped virtual address space (memmapped files) to allow the file to grow beyond available memory and be paged on and off disk.
To do that the need to create a file to 'back' the VAS.
- On *nix; they probably create the backing file and then immediately unlink it (whilst still holding an open handle to it) so that it disappears when the process ends.
This mechanism of self=managing temporary files isn't available of Windows, so they've opted to use an alternate datastream. (Perhaps as an attempt to prevent any spooled data being assessible; though that would be forlorn; more.exe can find it.)
And they forgot to delete the file afterwards.
Another possibility is that using threads and multiple handles to an in-memory db in conjunction with DBI's broken threading semantics is preventing the clean-up code being invoked.
I'm not sure where else to go looking for knowledgeable sqlite+windows devs?
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^10: threads::shared seems to kill performance (Workaround).
by MidLifeXis (Monsignor) on Jul 22, 2013 at 15:40 UTC | |
by BrowserUk (Patriarch) on Jul 22, 2013 at 15:45 UTC | |
by MidLifeXis (Monsignor) on Jul 22, 2013 at 15:47 UTC |