Day 2 的內容量比 Day 1 大很多。從 Managed Instance、VM 選型、效能調校一路講到高可用性、備份策略、資料庫遷移、TDE 加密。幾乎每個段落都有考試重點。

Managed Instance:過渡方案

Managed Instance(MI)是介於 PaaS 跟 VM 之間的選項。相容性 99%(不是 100%),只提供 SSDE 服務,不含 SSIS、SSAS、SSRS。資料上限 16 TB,業務關鍵型的話只有 4 TB。

部署優先順序還是:PaaS > VM > MI。MI 的定位是「沒辦法直接從 VM 跳到 PaaS」時的中繼站,費用不低,不是首選。

遷移路徑建議:VM → MI → PaaS,逐步遷移。

MI 有自動調優功能(SQL Server 2016+ 起),但目前只支援索引層面(建立/刪除索引)跟統計資訊更新。存儲規劃、應用程式優化、架構優化這些還沒涵蓋。

VM 部署的 License 陷阱

這個要特別注意:VM 映像預設包含 SQL Server 授權費用。如果你沒手動選「使用自己的授權」(Hybrid Benefit),帳單會非常驚人。

場景 說明
預設部署 包含 SQL License 費用,很貴
Hybrid Benefit 選「自帶授權」,不額外收費
測試環境 用免費版(Developer/Express)

部署 VM 的時候一定要手動選 Hybrid Benefit。不做任何變更的話,預設就是收你 License 費。

CPU 與記憶體選型

CPU

OLTP(交易處理)要的是高單核效能(高主頻/高 ACU),核心數不用多。OLAP(分析處理)反過來,核心數越多越好,單核效能不重要。

幾個規則:選 1:1 CPU 比例(物理核心:虛擬核心 = 1:1)、避免 B 系列(Burstable)——雖然便宜但 CPU 超分,生產環境性價比低。

記憶體公式

工作負載 最低記憶體
OLTP 資料量 ÷ 20 + 2 GB
OLAP 資料量 ÷ 10 + 2 GB

2 GB 是留給作業系統的。建議比估算值高 3-4 倍就好,盲目加記憶體沒意義。

SQL Server 有個特性:它會吃掉所有可用記憶體。這不代表記憶體不夠,是引擎的自動管理行為。但你一定要設 Max Server Memory,至少留 2 GB 給 OS。

TempDB 放哪裡

TempDB 跟 VM 臨時磁碟是絕配——兩者的生命週期完全一致。臨時磁碟隨 VM 重啟清空,TempDB 隨 SQL 重啟重建。

項目 說明
首選位置 VM 臨時磁碟(D: drive)
效能 比持久化 SSD 更好
費用 VM 自帶,不用額外付費
例外 TempDB 容量需求超過臨時磁碟大小時才需要額外配 SSD

重點:資料檔案(.mdf/.ndf)和日誌檔案(.ldf)絕對不要放在臨時磁碟上。

效能調校

建議啟用:備份壓縮(縮短備份時間,不是為了省空間)、自動調優(2016+)。

建議禁用:自動收縮(Auto Shrink,會造成索引碎片)、自動關閉(Auto Close,頻繁啟停開銷大)。

必須設定:Max Server Memory。

資料壓縮的正確觀念

核心觀念:資料壓縮是為了提升效能(減少 I/O),不是為了省儲存空間。

適用 OLAP / 資料倉庫(低頻寫入),不適用 OLTP(頻繁寫入會降速)。壓縮後 I/O 量減少(比如 27%),讀取效能就直接提升 27%。

常見誤解:「磁碟不夠用所以壓縮」→ 應該買更大的磁碟或排查日誌增長問題。

日誌檔增長控制

唯一正確方法:Log Backup

方法 正確性
Log Backup ✅ 唯一正確
切 Simple Recovery Model ❌(喪失時間點還原能力)
手動清除日誌
刪除日誌檔案 ❌ 危險
資料壓縮 ❌ 完全無關

日誌不斷增長是因為沒做 Log Backup,不是記憶體或磁碟不足。網路上大部分解法是錯的。

應用程式跟資料庫必須住在一起

黃金法則:延遲 < 1ms。

1
2
3
4
❌ App(本地)↔ DB(雲端)  延遲 5-100ms+
❌ App(雲端)↔ DB(本地) 延遲 5-100ms+
✅ App + DB 都在本地 延遲 < 1ms
✅ App + DB 都在雲端 延遲 < 1ms

99% 的應用程式設計假設延遲 < 1ms。跨地域部署延遲至少 5ms,遷移後一堆效能問題的根因往往是網路延遲,不是雲端效能不足。

混合部署的正確用法是拿雲端當災難復原站點或備份目的地,不是把 App 跟 DB 拆開放。

HA vs DR

高可用性(HA) 災難復原(DR)
同步方式 同步 非同步
資料一致性 零資料遺失 有 RPO(可能丟資料)
故障轉移 可自動 必須手動
延遲要求 < 1ms > 1ms(跨 Region)

考試重點:同步節點可以自動轉移,非同步/異地節點必須手動。原因很直白——非同步的資料有差異,自動轉移會丟資料。

課上有句話很到位:「寧可停機,也不要盲目切換非同步節點。丟失的資料不可逆。」連微軟自己的服務故障時,也是選擇等修復而不是盲目轉移。

Always On 可用性群組(AOAG)

SQL Server 2012+ 的 AOAG 是目前首選的 HA/DR 技術,取代了舊的 Database Mirroring 跟 Log Shipping。PaaS 版本內建 HA 不用手動配;MI 跟 VM 需要自己搞,技術難度較高。

Azure Site Recovery(ASR)是 VM 層面的非同步複製,RPO 較高,簡單場景可以用,但不能替代 AOAG。

備份策略

PaaS 的備份基本不用你操心:預設保留 7 天、快速保留上限 35 天、長期保留最長 10 年、完整備份每週自動跑、日誌備份每 5-10 分鐘自動跑。RPO 趨近零。

VM 的話需要自己規劃。建議先備份到本地(速度快),再同步到雲端(異地保護)。備份壓縮可以把時間砍一半。

資料庫遷移

遷移前第一步:用 DMA(Data Migration Assistant)評估相容性。資料搬移本身問題不大,程式碼才是最大挑戰——函數、預存程序、觸發器的相容性。

版本跨度太大(比如 SQL 2000 → 2022)沒辦法直接升,要逐步過渡:2000 → 2008 → 2012 → 2022。

停機時間評估:1 小時以內是低難度,5 分鐘以內需要事務複製或 AOAG,零停機不要輕易承諾。

遷移鐵則:一定要有回退計畫(Rollback Plan),測試沒辦法覆蓋 100% 場景。

TDE 透明資料加密

對靜態資料加密,防止硬碟被偷之後資料外洩。對應用程式透明,不需要改 code。

但最重要的是金鑰管理:金鑰丟失 = 資料丟失。資料就在眼前卻打不開,找誰都沒用。

推薦用 Azure Key Vault 管金鑰,不要依賴 Windows OS 保護(OS 壞掉金鑰就可能跟著沒了)。啟用 TDE 之前,先把金鑰備份機制建好。

考試速記

問題 答案
部署優先順序? PaaS > VM > MI
VM CPU 避免哪個系列? B 系列
如何控制日誌增長? Log Backup(唯一正確)
資料壓縮用途? 提升 OLAP 讀取效能
TempDB 放哪? VM 臨時磁碟
同步節點故障轉移? 可自動
非同步節點故障轉移? 必須手動
App 跟 DB 可以分開部署? 不行,延遲 < 1ms
Hyperscale 可以降級? 超過回退期不可逆
TDE 金鑰丟了? 資料永久無法存取
遷移前第一步? DMA 評估相容性
能承諾零停機? 不要輕易承諾
PaaS 預設備份保留? 7 天
VM License 陷阱? 預設含 License,要選 Hybrid Benefit
OLTP 記憶體公式? 資料量 ÷ 20 + 2 GB

來源:DP-300 Azure Database Administrator Associate 課程第二天筆記