SQLite学习(六) - SQLite的临时文件
SQLite现在使用7中临时文件 (5)OFF时,不创建日志文件,也就是说它不支持回滚 2. Master Journal Files 当一个transaction要作用于多个数据库时,SQLite会创建master hournal file,用于实现多个数据库transaction的原子性。如果没有master journal file,transaction只能在单个数据库文件中保证原子性。 master journal file总是和数据库文件在同一个目录下。 当master journal file被删除时,transacton提交完成。 多个数据库使用ATTACH DATABASE命令被添加到一个database connection上的。 关于ATTACH DATABASE 语法: Attach [database] @filename as @inernal_db_name 几个解释 (1) ATTACH命令将一个database file添加到已有的database connection (2) database 就是参数@filename, 特殊值,:memory表述内存数据库, 一个空字符串表述temporoary database (3)attached database中表的使用,@inernal_db_name.table_name,如果attached database中表名是唯一的,则可以省去“@inernal_db_name.” (4) Transactions involving multiple attached databases are atomic,assuming that the main database is not ":memory:” and the journal!=WAL,如果有一项不满足,只保证单个数据库的原子性。 ... 7. Transient Database Used By VACUUM VACUUM命令用于重建数据库文件, 执行VACUUM 时,会拷贝整个数据库到Transient databases临时文件中,然后覆盖写回到原来的数据库文件中。 写回过程中会创建rollback journal or write-ahead log WAL file以保证transaction atomic。单vacuum执行完毕,临时文件被删除。 重建数据库文件的原因有以下几点 (1) 当大量数据被删除后,数据库文件中会有很多空块,空页和碎片,VACUUM rebuild数据库文件,移除这些空块,减少所占的磁盘空间 (2) 频繁的inserts,updates,and deletes 导致数据库文件中很多碎片,VACUUM 重建数据库文件使得表,索引连续的存储,减少空闲页, 减少所占的磁盘空间 (3) 当page_size 或用pragma auto_vacuum 命令修改这两个值时, SQLite会自动执行VACUMM (4) VACUUM只对main数据库有效,对ATTACHED数据库无效 (5)如果数据库中还有其他transaction, VACUUM will fail (6)除了使用VACUUM外,还可以使用PRAGMA auto_vacuum控制vacuum的执行 PRAGMA auto_vacuum; PRAGMA auto_vacuum = 0 | NONE | 1 | FULL | 2 | INCREMENTAL; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c – 检查数字是否为回文
- ruby-on-rails – 如何在开发过程中处理SSL?
- swfobject.embedSWF属性与用法 [复制链
- xml格式的word换行标记<w:br/>
- configure: error: XML configuration could not
- ruby-on-rails-3 – 如何在不在本地安装PostgreS
- swift 快速奔跑的兔几 本节的内容是:animations
- Sqlite 常用函数封装:修改密码,创建数据库、获
- ruby-on-rails – 如何使用paperclip-Rails加载和
- iphone – 扩展Multiline UILabel