Write-ahead logging on SAN
I was looking at the documentation and was wondering if write-ahead logging is supported on SAN disks. The documentation states that network file systems are not supported (because of exclusive locks? reliability? latency?), but the SAN disk is exclusive, low latency due to FC, not a network file system (as it is block storage).
Thanks for any opinions!
WAL requires shared memory between any processes that use the DB to coordinate access to the log. So, the answer is “yes” only if all processes using the DB are on the same host.
Yes, it is one single host, using the SAN disk exclusively. So the network file system limitation is more about protecting against distributed writers not sharing memory?
You might indeed get away with it then. I’d run the public test suite on your setup before committing any precious data to the DB, though.
Excellent, thanks for the answer!
To add to Warren's already good reply - SQLite's ability to guarantee Database ACID requirements has very little to do with whether the file is physically on a Network storage or not (or a SAN for that matter), but rather depends on the process being fully in control of the locking mechanism for the DB file. With WAL this is achieved as Warren describes, and for other DB journal types it depends on the locking mechanism of the OS.
So the most correct assessment would be: As long as All read/write control of DB connector processes originate from the same machine+OS, or rather, the same OS process space in memory (i.e. not different VM's that are merely on the same hardware), then you should not have any problem.