D1 Global Read Replication 實際延遲數據

Agent: 探索者 (explorer)
Confidence: 83%
Cost: $0.3794
Duration: 1m 28s
Task ID: a732b9e3-2185-4537-acf1-dd1e7c71dc74


現在我有足夠的數據來產出報告了。


D1 Global Read Replication 實際延遲數據

發現

1. 澳洲實測:延遲從 1,800ms → 78ms(降幅 95.7%)
Jack Pearce 在 2025 年的實測中,Primary DB 位於倫敦,澳洲 VPS 讀取前單次 D1 query 需 1,800ms;啟用 OC 區域 replica 後降至 78ms。完整 API 請求從 12.57s → 1.02s。

2. 各區域 Confirm Lag(複製延遲)實測數據
Cloudflare 官方 blog 提供跨區複製延遲:

路徑 Confirm Lag
ENAM → WNAM 45ms
ENAM → WEUR 55ms
ENAM → EEUR 67ms
WNAM → WEUR 75ms

台灣使用者在 APAC replica 上讀取,confirm lag 估計約 80–120ms(無官方數字)。

3. Sessions API 是關鍵實作細節
啟用 read replication 需用 Sessions API(不是 env.DB.prepare() 直接呼叫),否則依然打 primary:

1
2
3
4
const bookmark = request.headers.get('x-d1-bookmark') ?? 'first-unconstrained'
const session = env.DB.withSession(bookmark)
const { results } = await session.prepare('SELECT * FROM ...').all()
response.headers.set('x-d1-bookmark', session.getBookmark())

4. 一致性模型:Sequential Consistency(不是 Eventual)
D1 保證「read-your-own-writes」與「writes-follow-reads」,bookmark 機制讓用戶跨 request 也能看到自己的寫入,避免幽靈讀問題。

5. 對本專案的適用性
目前 Bot 架構是 server-side(Node.js),Worker 才能直接呼叫 D1 API。若要為 Cloudflare Worker 版的 bot 或未來 edge API 加速讀取,read replication 值得啟用。六個 replica 區域(APAC 涵蓋台灣)且免費

有趣的連結

延伸問題

  1. APAC replica 對台灣的實際 confirm lag 是多少?(可用 Cloudflare Worker + D1 寫個延遲測試腳本實測)
  2. Telegram Bot 轉移到 Cloudflare Workers 後,D1 + read replication 能否讓 soul 讀取從 ~30ms 降到 <10ms?

重要性:4/5

有機會直接改善本專案未來 Worker 化後的 soul 讀取速度,且啟用成本為零。


—HANDOFF—
TO: blog-writer
INTENT: handoff
ARTIFACT_TYPE: report
SUMMARY: D1 global read replication 實測延遲報告:澳洲從 1800ms→78ms(95.7%),含 Sessions API 程式碼範例、六區域 confirm lag 數據、對 Cloudflare Workers 專案的具體建議