系统sync()调用实际上没有任何帮助;它承诺安排写入磁盘操作,但仅此而已。
open()使用的常规技术是在设置磁盘文件的文件描述符时设置正确的选项: O_DSYNC, O_RSYNC, O_SYNC。然而,fsync()和fdatasync()的效果非常接近。您还可以查看O_DIRECTIO哪些通常受支持,尽管 POSIX 根本没有标准化它。
最终,DBMS 依靠操作系统来确保写入和同步到一个磁盘的数据是安全的。只要设备始终返回 DBMS 最后写入的内容,即使由于缓存而尚未位于实际磁盘上(因为它备份在非易失性缓存或类似的东西中),那么它并不重要。另一方面,如果您的 NAS(网络附加存储)不能保证您上次写入的内容(并被告知在磁盘上是安全的)在您读取时会返回,那么您的 DBMS 可能会受到影响(如果必须这样做)恢复。因此,您需要谨慎选择存储 DBMS 的位置,确保存储正常工作。如果存储不能像假设的磁盘那样充分工作,您最终可能会丢失数据。
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |