docs: benchmark search and document scaling

This commit is contained in:
2026-07-19 12:55:40 +08:00
parent 82879a36cc
commit 00928b72e4
3 changed files with 36 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# 擴展與資料庫評估
## 搜尋基準
FTS5 索引由 `posts_fts` 與 SQLite trigger 維護。可在部署前後以相同關鍵字比較查詢計畫與平均時間:
```bash
./scripts/benchmark-search.sh "關鍵字" 100
```
輸出中的 `queryPlan` 應包含 FTS 虛擬表掃描,而不是 `posts` 的全表 `LIKE` 掃描。請記錄貼文數量、硬體、SQLite 版本與平均查詢時間,作為升級決策依據。
## 何時由 SQLite 遷移到 PostgreSQL
SQLite 仍適合單一主機、單一磁碟與低至中等寫入量。當出現以下任一情況時,先在 staging 驗證 PostgreSQL
- 需要跨多台主機同時執行 Web/Worker,或需要跨區高可用。
- 寫入鎖定持續造成同步佇列延遲,或 WAL 檔案/備份窗口已難以控制。
- FTS、稽核或貼文資料量使查詢基準無法滿足服務目標。
遷移步驟:停止寫入、使用 v0.7 以後的 JSON 匯出建立內容快照、以 migration 建立 PostgreSQL schema、匯入 users/sources/posts/互動與同步工作、在 staging 驗證計數與抽樣內容、切換唯讀短暫維護窗口、最後更新 `DATABASE_URL` 及備份/監控設定。SQLite 與 PostgreSQL 的雙寫不列為預設策略;除非有完整一致性驗證,避免長期雙寫。