快照複寫 是最簡單、最直觀的複寫類型:在特定時間點對發行集資料「拍照」,產生靜態檔案 (`.bcp`、`.sch`、`.idx`),再由散發代理推送至訂閱端。不追蹤資料變更、不保證交易一致性,適合**唯讀、資料量中小、容忍延遲**的報表/決策支援場景。
| 代理程式 | 職責 | 執行端 |
|---|---|---|
| 快照代理 | 產生同步集 (資料檔 + 結構描述檔)、鎖定發行表、寫入散發資料庫追蹤 | 散發者 |
| 散發代理 | 將同步集從散發者傳送至訂閱者目的表 | 推式:散發者 / 拉式:訂閱者 |
SCH-S (結構穩定) + Sch-M (大量複製) 鎖,防止結構變更與資料修改,確保快照一致性。**建議排程在離峰時段執行**
資料是否需即時? → 是 → 交易複寫 / 合併複寫
↓ 否
訂閱端是否唯讀? → 否 → 交易複寫 (可更新訂閱)
↓ 是
資料量是否大於 10GB? → 是 → 考慮分割快照 / 壓縮 / 高速網路
↓ 否
容忍資料過期多久? → 可接受數小時/日間隔 → 快照複寫 ✅
↓ 需近乎即時
交易複寫 (唯讀訂閱) 或 CDC + ETL
| 指標 | 正常範圍 | 異常處理 |
|---|---|---|
| 快照代理執行時間 | 資料量/網速預估 ±20% | 檢查鎖爭用、磁碟 IO、bcp 參數 |
| 散發代理延遲 | < 5 分鐘 (推式) | 檢查訂閱者負載、網路、代理排程 |
| 同步集大小 | 與資料庫大小成正比 | 啟用壓縮、篩選不必要資料行/列 |
| 錯誤訊息 | 無 | 查看代理歷程記錄、事件檢視器、Replmon |
快照複寫雖簡單,但大資料量下的鎖衝擊、網路傳輸、磁碟 IO 皆為隱形殺手。做好容量規劃、離峰排程、壓縮分割,才能穩定落地。