On 15 Nov 2016, at 8:18pm, Jens Alfke <j...@mooseyard.com> wrote: > The only way to guarantee a true barrier is to really-and-truly flush the > disk controller, which requires not simply flushing but resetting it. That’s > what F_FULLFSYNC on macOS does. (Unfortunately it makes the disk controller > unresponsive for a macroscopic amount of time while it resets, which is why > it’s slow. Worse, it adds latency to _all_ I/O on the system. Flush too often > on a desktop computer and your music player will glitch, video playback will > drop frames, etc.)
It's worse than that. Modern storage subsystems (hard disk or SSD) intended for use in a normal user computer always lie to the OS about flushing to disk. The apparent increase in speed from doing this is so big that every manufacturer has to do it, or risk having every review harp on about how slow their computer performs in real life tasks. There is no way to get these things to be honest. Because not one person in ten thousand cares. Most people are more interested in how fast they can launch Microsoft Word. So if you're truly worried about flush-to-disk what do you do ? Solution 1 is to buy hard disks rated for servers -- sometimes called "enterprise-class hard drives" -- and to set the DIP switches to tell them they're being used on a server. Those things are intended for use in servers, and ACID can be important to a server, so they support it properly and do not lie. Solution 2 works on any hard drive. To make it flush cache just don't do anything that involves disk access for a couple of seconds. They note the inactivity, then decide they have time to write away cache. But if all the contact you have with the hard disk is through the OS ? Forget it. If power to the computer is but you're probably depending on the amount of power left in the system to flush data to disk. And given the tiny power consumption those things have these days most of the time that's enough. Simon. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users