SQLite VACUUM命令分析

2021-07-11 03:18:49 字數 784 閱讀 5667

vacuum命令是sqlite的乙個擴充套件功能,模仿postgresql中的相同命令而來。若呼叫vacuum帶乙個表名或索引名, 則將整理該錶或索引。在sqlite 1.0中,vacuum命令呼叫 gdbm_reorganize()整理後端資料庫檔案。

sqlite 2.0.0中去掉了gdbm後端,vacuum無效。在2.8.1版中,vacuum被重新實現。現在索引名或表名被忽略。

當資料庫中的乙個物件(表,索引或觸發器)被撤銷,會留下空白的空間。它使資料庫比需要的大小更大,但能加快插入速度。實時的插入和刪除會使得資料庫檔案結構混亂,減慢對資料庫內容訪問的速度。 vacuum命令複製主資料庫檔案到臨時資料庫並從臨時資料庫重新載入主資料庫,以整理資料庫檔案。這將除去空白頁,使表資料彼此相鄰排列,並整理資料庫檔案結構。不能對附加資料庫檔案進行以上操作。

若當前有活動事務,該命令無法起作用。對於in-memory資料庫,該命令無效。

sqlite3.1中,可以通過使用auto-vacuum模式取代vacuum命令,使用 auto_vacuum pragma開啟該模式。

vacuum的使用:vacuum main

當對3.4節中討論的資料進行vacuum操作後,頁面只剩第乙個頁面。

vacuum實現:

**實現(vcuum.c):

intsqlite3runvacuum(

char

**pzerrmsg, sqlite3 

*db)

教你使用SQLite Vacuum

sqlite 是乙個軟體庫,實現了自給自足的 無伺服器的 零配置的 事務性的 sql 資料庫引擎。sqlite 是在世界上最廣泛部署的 sql 資料庫引擎。sqlite 源 不受版權限制。vacuum 命令通過複製主資料庫中的內容到乙個臨時資料庫檔案,然後清空主資料庫,並從副本中重新載入原始的資料庫...

Linux補分命令

許可權 物件 ugo 分類 rwx 指令 chmod chown setfacl 屬性 chattr i umask suid 屬性了解 程序 程序的原理,生命週期,程序狀態 檢視 ps top 列的資訊 user,pid,nice,cpu 控制 kill 訊號種類 1重新裝載,9退出 作業 job...

SSD1306部分命令

命令描述 1.基礎命令 1.1 為頁位址模式設定列低半位元組的開始位址 00h 0fh 1.2 為頁位址模式設定列高半位元組的開始位址 10h 1fh 1.3 記憶體位址模式設定 20h 頁位址模式 a 1 0 10xb 通過命令b0h b7h,設定目標顯示屏當地的頁開始位址 通過命令00h 0fh...