SQLite C 接口
设备特性
#define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002 #define SQLITE_IOCAP_ATOMIC1K 0x00000004 #define SQLITE_IOCAP_ATOMIC2K 0x00000008 #define SQLITE_IOCAP_ATOMIC4K 0x00000010 #define SQLITE_IOCAP_ATOMIC8K 0x00000020 #define SQLITE_IOCAP_ATOMIC16K 0x00000040 #define SQLITE_IOCAP_ATOMIC32K 0x00000080 #define SQLITE_IOCAP_ATOMIC64K 0x00000100 #define SQLITE_IOCAP_SAFE_APPEND 0x00000200 #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 #define SQLITE_IOCAP_IMMUTABLE 0x00002000 #define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
sqlite3_io_methods对象 的 xDeviceCharacteristics 方法 返回一个整数,它是这些位值的向量,表示保存sqlite3_io_methods 引用的文件的大容量存储设备的 I/O 特性。
SQLITE_IOCAP_ATOMIC 属性意味着任何大小的所有写入都是原子的。SQLITE_IOCAP_ATOMICnnn 值意味着写入大小为 nnn 字节且与 nnn 的整数倍地址对齐的块是原子的。SQLITE_IOCAP_SAFE_APPEND 值意味着当数据附加到文件时,首先附加数据,然后扩展文件的大小,而不是相反。SQLITE_IOCAP_SEQUENTIAL 属性意味着信息写入磁盘的顺序与调用 xWrite() 的顺序相同。SQLITE_IOCAP_POWERSAFE_OVERWRITE 属性意味着在崩溃或断电后重新启动后,在应用程序级别写入的文件中的唯一字节可能已经更改,并且相邻字节,甚至同一扇区内的字节保证不变。SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 标志表示文件在打开时无法删除。SQLITE_IOCAP_IMMUTABLE 标志表示该文件位于只读介质上,即使具有提升权限的进程也无法更改。
SQLITE_IOCAP_BATCH_ATOMIC 属性意味着当这些写操作被SQLITE_FCNTL_BEGIN_ATOMIC_WRITE和 SQLITE_FCNTL_COMMIT_ATOMIC_WRITE括起来时,底层文件系统支持原子地执行多个写操作。