#define SQLITE_SYNC_NORMAL 0x00002 #define SQLITE_SYNC_FULL 0x00003 #define SQLITE_SYNC_DATAONLY 0x00010
当 SQLite 调用 sqlite3_io_methods 对象的 xSync() 方法时,它会将这些整数值的组合用作第二个参数。
当使用 SQLITE_SYNC_DATAONLY 标志时,表示同步操作只需要将数据刷新到海量存储中。不需要刷新 inode 信息。如果标志的低四位等于 SQLITE_SYNC_NORMAL,则表示使用正常的 fsync() 语义。如果低四位等于 SQLITE_SYNC_FULL,则表示使用 Mac OS X 风格的 fullsync 而不是 fsync()。
不要将 SQLITE_SYNC_NORMAL 和 SQLITE_SYNC_FULL 标志与 PRAGMA synchronous=NORMAL 和 PRAGMA synchronous=FULL 设置混淆。 synchronous 准则 决定何时调用 xSync VFS 方法,并且在所有平台上都一致应用。 SQLITE_SYNC_NORMAL 和 SQLITE_SYNC_FULL 标志决定同步操作的力度、严格程度或强制性,并且仅在 Mac OSX 上对默认的 SQLite 代码有影响。(第三方 VFS 实现也可能区分 SQLITE_SYNC_NORMAL 和 SQLITE_SYNC_FULL,但在 SQLite 本地支持的操作系统中,只有 Mac OSX 关心这种区别。)