Synchronization Type Flags
Synchronization Type Flags
#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设置混淆。同步杂注决定何时发生对xSync VFS方法的调用,并且统一应用于所有平台。SQLITE_SYNC_NORMAL和SQLITE_SYNC_FULL标志决定了同步操作的精力或严格程度,以及对Mac OSX默认SQLite代码的影响。(第三方VFS实现也可能区分SQLITE_SYNC_NORMAL和SQLITE_SYNC_FULL,但在SQLite本机支持的操作系统中,只有Mac OSX关心这种区别。)