![]()
SQLite 是全世界應用最廣泛的嵌入式資料庫引擎,從手機 App、瀏覽器到物聯網裝置都能看到它的身影。2026 年 7 月 24 日發布的 3.53.4 版本,除了修補前幾個小版本(3.53.1~3.53.3)遺留的問題外,也整合了自 3.53.0 以來累積的多項重要功能。以下用淺顯的方式,把這次更新拆解成幾個重點面向來介紹。
一、最值得關心的修復:資料庫損壞漏洞
這次更新最關鍵的一項,是修復了與 WAL(Write-Ahead Log,預寫式日誌)重置有關的資料庫損壞問題。WAL 是 SQLite 用來提升寫入效能與並行處理能力的機制,一旦這個環節出錯,最壞情況可能導致資料庫檔案損毀。對一般使用者來說,這代表:只要有使用資料庫寫入操作的應用程式,都建議儘快升級到這個版本,以避免潛在的資料遺失風險。
二、新增QRF(Query Result Formatter)
QRF(Query Result Formatter)是這次版本很有特色的新功能,簡單來說,它能把 SQL 查詢結果自動排版成整齊的表格,方便在文字介面(例如命令列視窗)中閱讀,例如數字會自動靠右對齊、輸出以框線字元組成表格。這對於習慣用命令列工具查資料庫的工程師或維運人員來說,等於是「不用額外工具,資料庫自己就把報表排版好了」。目前互動式命令列(CLI)已預設採用這種新格式,而批次執行(例如寫腳本自動跑 SQL)則仍維持舊格式,避免既有自動化流程被打亂。
三、SQL 語法更靈活
這次也強化了 SQL 語言本身的能力,重點包括:
- ALTER TABLE 更彈性:現在可以直接新增或移除欄位的 NOT NULL、CHECK 限制條件,不需要像以前一樣重建整張表。
- REINDEX EXPRESSIONS:可以單獨重建「表達式索引」(例如根據函數運算結果建立的索引),用來修復索引過期失效的問題。
- VACUUM INTO 加強:備份資料庫時可以透過 URI 參數指定保留空間大小,方便預留未來成長空間。
- 新增了
json_array_insert()、jsonb_array_insert()兩個 JSON 處理函數,讓操作 JSON 陣列更方便。
四、查詢效能與規劃器的優化
SQLite 的「查詢規劃器」負責決定一條 SQL 該怎麼執行最有效率,這次做了幾項調整:對於 EXCEPT、INTERSECT、UNION 這類集合運算,一律改用排序合併演算法,官方說明這樣「幾乎總是」比雜湊表快;另外也改善了多表格連接(JOIN)時的順序選擇邏輯,減少不必要的運算。對開發者而言,這些改動通常不需要修改任何程式碼,資料庫會自動跑得更快。
五、浮點數精度改變 — 需要留意的相容性議題
比較值得注意的是,浮點數與文字互相轉換的精度,預設從過去的 15 位有效數字,提升到 17 位。這代表數字顯示可能比以前更精確,但也可能讓某些依賴舊有顯示格式的程式或測試出現差異。如果需要維持舊行為,可以透過 SQLITE_DBCONFIG_FP_DIGITS 設定調整回來。這是一個「預設值改變」型的更新,建議有大量數值運算的系統在升級前先做測試。
六、命令列工具(CLI)多項細節優化
命令列工具本身也有不少貼心的小改進,例如 .timer 指令可以設定只計時下一句 SQL、.progress 可以設定逾時自動中斷查詢、.indexes 指令的搜尋邏輯改為比對索引名稱本身(而非資料表名稱),讓搜尋功能真正符合預期。另外要特別提醒:點指令結尾若有沒加引號的分號,現在會被直接忽略,這是一項可能造成相容性問題的改變,若有腳本依賴舊行為,需要特別檢查。
七、其他技術亮點
新增了多個 C 語言介面函數,方便進階開發者操作字串緩衝區與虛擬表;Session 擴充功能新增了逐項新增變更的介面,方便做資料同步;JavaScript/WASM 版本則新增了 opfs-wl 檔案系統選項,透過瀏覽器的 Web Locks 機制達到更公平的鎖定共享,不過需要較新版本的瀏覽器支援。
重點總結
如果只想記住三件事:第一,這個版本修了一個可能造成資料庫損壞的漏洞,建議儘快升級;第二,新增的 QRF 讓命令列查詢結果變得更好讀;第三,浮點數精度與分號規則有變動,升級前建議簡單測試一下既有系統是否受影響。
需要特別說明的是,官方頁面提到 3.53.4 這個修補版本,主要是為了修正前幾個版本(3.53.1 至 3.53.3)中「主要由人工智慧引起的問題」,詳細細節官方僅指向提交紀錄,並未在頁面上進一步展開說明。





