%SQLITE_SYNC_NORMAL = &H00002???
%SQLITE_SYNC_FULL = &H00003???
%SQLITE_SYNC_DATAONLY = &H00010???
当SQLite调用sqlite3_io_methods对象的xSync()方法时,它将使用这些整数值的组合作为第二个参数。
当使用SQLITE_SYNC_DATAONLY标志时,这意味着同步操作只需要将数据刷新到大容量存储。Inode信息不需要刷新。如果标志的低4位等于SQLITE_SYNC_NORMAL,则表示使用正常的fsync()语义。如果较低的四位等于SQLITE_SYNC_FULL,则表示使用Mac OS X样式fullsync而不是fsync()。
不要将SQLITE_SYNC_NORMAL和SQLITE_SYNC_FULL标志与PRAGMA sync = NORMAL和PRAGMA同步= FULL设置混淆。同步编译指示确定何时发生对xSync VFS方法的调用,并在所有平台上均匀应用。SQLITE_SYNC_NORMAL和SQLITE_SYNC_FULL标志确定同步操作的精力充沛,严谨或有力,仅在默认SQLite代码的Mac OSX上有所不同。(第三方VFS实现也可能会区分SQLITE_SYNC_NORMAL和SQLITE_SYNC_FULL,但在SQLite原生支持的操作系统中,只有Mac OSX关心区别。)