共用方式為


Azure SQL Database 的架構最佳做法

Azure SQL Database 是完全受控的平臺即服務資料庫引擎,可處理大部分的資料庫管理功能,而不需要使用者介入。 管理功能包括升級、修補程序、備份和監視。

單一資料庫資源類型會在 SQL Database 中建立資料庫。 資料庫有自己的一組資源,並透過 邏輯伺服器進行管理。 您可以使用 彈性集區,在單一資源集區中建立多個資料庫。

本文假設身為架構設計人員,您已檢閱 數據存放區選項 ,並選擇 SQL Database 作為工作負載的資料庫引擎。 本文中的指引提供架構建議,這些建議會對應至 Well-Architected Framework 支柱的原則。

本文也假設您已熟悉 SQL Database 核心概念。 如需詳細資訊,請參閱 SQL Database 的核心概念SQL Database 的新功能?

技術範圍

此檢閱著重於下列 Azure 資源的相關決策:

  • SQL Database

Reliability

可靠性支柱的目的是藉由 建置足夠的復原能力,以及從失敗快速復原的能力,來提供持續的功能。

可靠性設計原則 提供適用於個別元件、系統流程和整個系統的高階設計策略。

工作負載設計檢查清單

根據 可靠性設計檢閱檢查清單,啟動您的設計策略。 請確定其與業務需求的相關性,同時請記住 SQL Database 的可靠性。 擴充策略,以視需要包含更多方法。

  • 熟悉 SQL Database 產品可靠性指引:如需詳細資訊,請參閱下列資源:

  • 選擇適當的 SKU 組態: 針對關鍵工作負載使用業務關鍵層,因為它可提供最高的可靠性保證。

    當業務關鍵層不實用時,請考慮 SQL Database 超大規模資料庫層級,以符合嚴格的復原時間目標和恢復點目標。 超大規模資料庫層會使用記憶體快照集,而不是傳統的資料庫備份機制,以提供零停機時間和快速復原。

  • 建置備援以改善復原能力: 使用主動式異地復寫、故障轉移群組和區域備援來增強資料庫的可用性。

  • 使用原生災害復原和備份功能: 使用異地還原從服務中斷復原。 您可以在任何 AZURE 區域中的任何 SQL Database 伺服器或受控實例上還原資料庫。 還原會使用最新的異地復寫備份。

    使用時間點還原功能以從人為錯誤中復原。 時間點還原會將資料庫還原到先前的時間點,以從不小心的更改中復原資料。

  • 監視 SQL Database 的可靠性與整體健康情況指標: 近乎即時地監視 SQL Database 以偵測可靠性事件。

  • 實作重試邏輯和輪詢邏輯: 使用這些功能來處理應用程式中的暫時性錯誤。

  • 分片資料: 跨多個資料庫複寫您的結構描述,在每個執行個體中儲存資料的子集。 分片 可以提供故障隔離,其中一個資料庫實例的故障不會影響池中其他實例的可用性。

  • 備份您的 TDE 加密金鑰: 當您使用客戶自控密鑰進行透明資料加密 (TDE)時,將密鑰備份至 Azure Key Vault。

組態建議

Recommendation Benefit
使用 主動式地理複寫 在不同地區建立可讀取的輔助資料庫。

如果您的應用程式支援只讀連接字串,請使用輔助資料庫來處理只讀資料庫動作。 此方法可減輕主要實例的負擔。
如果您的主資料庫失敗,您可以對複寫的資料庫執行手動故障轉移,以確保應用程式在最短停機時間的情況下繼續運作。 具有唯讀連線的輔助資料庫可改善整體效能,並確保讀取作業的高可用性。
使用 故障轉移群組 將主要資料庫實例到輔助資料庫實例的故障轉移自動化。 故障轉移群組提供異地故障轉移期間保持不變的讀寫和只讀接聽程式端點。 地理容錯移轉將群組中所有的次要資料庫轉換為主要角色。 異地故障轉移完成後,網域名稱系統 (DNS) 記錄會自動更新,將端點重新導向至新的地區。 異地故障轉移群組可簡化異地復寫資料庫的部署和管理,以確保持續可用性,而不需要手動介入。 您不需要在地理故障轉移後變更應用程式的連接字串,因為連線會自動路由至新的主資料庫。
將資料庫設定為 區域備援 區域備援可用性可確保您的計算和記憶體元件會分散到主要區域內的多個 Azure 可用性區域。 計算和記憶體元件橫跨兩或三個區域,如 Azure SQL Database 所選取,以在具有獨立電源、冷卻和網路功能的個別實體位置進行最佳復原。 如果其中一個可用性區域發生中斷,SQL Database 實例會維持運作,並自動故障轉移至運行中區域,而不會遺失已提交的資料。
在您的應用程式中實作 重試邏輯 。 SQL Database 對於可轉移的基礎架構故障具有韌性,但這些故障可能會影響您的連線能力。 在您的重試邏輯中實作退避邏輯。 重試邏輯可改善應用程式暫時失敗的復原能力,並協助應用程式在不手動介入的情況下復原。 當應用程式與 SQL Database 互動時發生暫時性錯誤時,請確定您的程式代碼可以重試呼叫。

輪詢邏輯會增加重試之間的延遲,這有助於防止網路壅塞和伺服器多載。
設定時間點還原 (PITR)、異地還原和長期保留的 備份 自動備份提供還原功能,您可以將其用作滿足工作負載的 RTO 和 RPO 需求的一部分。 例如,您可以使用 PITR 從人為錯誤中復原,同時保留異地還原以進行完整服務中斷。
當您使用自己的金鑰時,請備份您的加密金鑰。 當您使用自己的加密金鑰時,您會取得金鑰的完整和細微控制,但您必須管理金鑰和金鑰輪替。 Key Vault 提供集中式位置來管理加密密鑰。 Key Vault 會在一個工具中集中管理金鑰,並協助防止意外遺失密鑰。

安全性

安全性要素的目的是為工作負載提供 機密性、完整性和可用性 保證。

安全性設計原則提供高階設計策略,可藉由將方法套用至 SQL Database 的技術設計,以達成這些目標。

工作負載設計檢查清單

根據 設計檢閱檢查清單開始您的設計策略,識別安全性 的弱點和控制措施,以改善安全性狀態。 擴充策略,以視需要包含更多方法。

  • 檢閱安全性基準: 若要增強工作負載的安全性狀態,請檢閱 SQL Database 的 Azure 安全性基準

    如需可協助工作負載符合安全性和合規性需求之功能的詳細資訊,請參閱 內建的安全性與合規性功能

  • 實作嚴格、條件式和可稽核的身分識別和存取管理: 針對工作負載的驗證和授權需求,使用Microsoft Entra標識符。 Microsoft Entra ID 提供集中式授權和存取管理。

    集中管理 邏輯伺服器 層級資料庫集合的登入、防火牆規則、稽核規則和威脅偵測原則。

  • 加密數據: 啟用數據加密來保護機密性和完整性。 使用 和 Always EncryptedAlways Encrypted with secure enclaves功能來保護高敏感性資訊,例如信用卡號碼和社保號碼。 這些功能有助於防止加密金鑰公開至資料庫引擎。

  • 套用網路分段和安全性控制: 在您的網路設計中建立有意圖的分段和邊界,並在所有網路邊界使用局部化的網路控制來實施縱深防禦原則。

    使用 虛擬網路規則 來控制來自虛擬網路中特定子網的通訊。

    在資料庫層級和伺服器層級設定 SQL Database 防火牆規則 ,以限制對資料庫的存取。 如果您使用 Azure 防火牆,請使用 SQL 完整功能變數名稱 (FQDN) 設定 Azure 防火牆應用程式規則

    檢閱 SQL Database 連線架構Redirect或在可行時使用Proxy連線原則

組態建議

Recommendation Benefit
最低傳輸層安全性 (TLS) 版本 設定為至少 1.2 版,如果實際為 1.3 版,則為 。 Azure 即將淘汰 TLS 1.0 和 1.1 版,因為它們不安全。 1.3 版是最新且最安全的版本。
請考慮根據 總賬設計資料庫數據表。 總帳功能可為所有數據變更提供稽核、防篡改證據和信任保障。
設定 Always Encrypted ,藉由委派加密密鑰的數據存取來保護應用程式內的敏感數據。 Always Encrypted 有助於防止加密密鑰公開至資料庫引擎。 這項功能提供擁有數據的人員,以及應該可以存取數據的人員與管理數據但不應該具有存取權的人員之間的分隔。 例如,內部部署資料庫管理員、雲端資料庫作員或其他高許可權未經授權的使用者不應該有存取權。
啟用 安全記憶體保護區來擴充 Always Encrypted 的功能。 利用伺服器端的安全記憶體保護區,在Always Encrypted資料庫中執行其他不支援的作業。
使用 適用於 SQL Database 的 Azure Private Link 來強制執行透過 私人端點的安全通訊。 Private Link 提供資料庫與虛擬網路之間的私人連線,讓您可以停用公用存取。
使用適用於 SQL Database 的 Microsoft Defender 弱點評估掃描弱點。 SQL 弱點評估是 SQL Database 的內建服務,可識別並協助補救潛在的安全性弱點。 它會根據Microsoft最佳做法,提供可採取動作的步驟和自定義的補救腳本。
使用 SQL Database 的進階威脅防護來偵測異常活動。 這些活動可能表示存取或利用資料庫的異常和潛在有害嘗試。 進階威脅防護提供異常活動的安全性警示,可協助您偵測並回應可能發生的威脅。 警示已整合到適用於雲端的 Microsoft Defender 中。
使用 SQL Database 稽核來追蹤資料庫事件。 稽核可協助您保持法規遵循、了解資料庫活動,以及深入了解可指出商務考量或疑似安全違規的不一致和異常。
使用者指派的受控識別 設定為伺服器識別。 Azure 資源受控識別可以免除以程式碼管理認證的需求。
停用 SQL 型驗證,只 允許Microsoft Entra 驗證 Microsoft用於驗證的 Entra 會集中您的身分識別、存取和授權管理,並提供更細微的許可權給 SQL Database 資源。

成本優化

成本優化著重於 偵測支出模式、將投資放在重要領域,並將其他 優化,以符合組織的預算,同時符合商務需求。

成本優化設計原則提供高階設計策略,以達成這些目標,並在與SQL Database相關的技術設計中做出取捨。

工作負載設計檢查清單

  • 熟悉 SQL Database 成本管理資源: 檢閱 規劃及管理 SQL Database 的成本 一文。 此資源包含節省成本的策略,包括如何優化符合成本效益的實例和資源的建議,以及如何為您的工作負載選擇正確的計費模型。

  • 預估初始成本: 在成本模型化練習中,使用 Azure 定價計算機 來評估工作負載中與 SQL Database 相關聯的近似成本。

  • 為您的工作負載選擇正確的 SQL Database 服務層級: 評估 SQL Database 無伺服器 層和 超大規模資料庫 層,以更符合您的使用案例定價。

    請考慮 彈性集區 來管理及調整多個資料庫。

  • 優化元件成本: 針對您想要長時間運作的靜態工作負載,請考慮保留 SQL Database 的容量

    微調備份記憶體耗用量,以避免使用量過高的費用。

  • 優化應用程式程式代碼成本: 將查詢和其他作業優化,以減少資源耗用量、將運行時間降到最低,以及改善整體效能。

  • 優化擴展成本:將成本優化的考量納入您的資料庫擴展策略中。

    若要降低成本,請在低使用量期間相應減少資料庫。 範例包括季節性工作負載,例如負載在數周或數月內減少,或在夜間閑置的工作負載。

組態建議

Recommendation Benefit
研究可用的 SQL Database 服務層級,並根據容量規劃,為每個使用案例選取最佳模型。 適當的服務層級可協助您避免過度布建所浪費的成本。
使用 查詢效能深入解析效能建議,將您的查詢、數據表和資料庫優化。 優化作業可協助減少資源耗用量,並協助您判斷適當的 SQL Database SKU 以符合您的效能和預算需求。
使用 建議的備份策略 來微調備份記憶體耗用量。

針對 SQL Database 中的虛擬核心資料庫,每個備份類型所取用的記憶體都會在資料庫監視窗格上回報為個別計量。 備份類型包括完整、差異和日誌備份。 備份記憶體耗用量上限,資料庫的數據大小上限會包含在資料庫的價格中。 記憶體成本過多取決於工作負載和個別資料庫的大小上限。
瞭解影響備份記憶體成本的因素,例如資料庫大小、變更率和保留期間。 正確設定備份記憶體以優化備份策略,並將費用降至最低。
請考慮針對單一資料庫使用 無伺服器 層,這些資料庫具有間歇性、無法預測的使用模式,而且可以在閑置使用期間之後,承受計算熱身的延遲。 無伺服器資料庫會根據工作負載需求自動暫停和調整其計算資源。 計費是以每秒使用的計算量為基礎。 如果您的資料庫使用模式無法預測,或在低或閒置使用量期間出現突發使用量,無伺服器資料庫可協助優化成本和效能。
請考慮為所有工作負載類型使用超大規模層。 超大規模資料庫層的雲端原生架構提供獨立擴充的計算和記憶體,以支援各種傳統和現代化應用程式。 超大規模資料庫層中的計算和記憶體資源大幅超過一般用途和業務關鍵層中可用的資源。 超大規模資料庫不需要額外的 SQL 授權成本。
使用保留容量節省資源成本。 在您判斷區域中 Azure SQL 資料庫的總計算容量和效能層級之後,請使用該資訊來保留一或三年的容量。 預先購買計算資源以降低 SQL Database 的計算成本。 一年期保留最多可以節省 40%,而三年的保留最多可以節省 60%。
使用 Azure Hybrid Benefit 交換已啟用軟體保證的 SQL Server 授權,以節省 SQL 授權成本。 Azure Hybrid Benefit 最多可節省 30% SQL Database 中的授權成本。 當您將資料庫遷移至 Azure 時,您可以利用現有的軟體保證合約。
使用 彈性集區 來協助管理和調整多個資料庫。 SQL Database 彈性集區是一個簡單、符合成本效益的解決方案,可管理和調整具有不同且無法預測使用量需求的多個資料庫。 彈性集區中的資料庫位於單一伺服器上,並以固定價格共用固定數量的資源。

卓越營運

營運卓越設計原則 提供高階設計策略,以達成工作負載作業需求的目標。

工作負載設計檢查清單

根據 Operational Excellence 的設計檢閱檢查清單 開始設計策略,以定義與 SQL Database 相關的可檢視性、測試和部署程式。

  • 熟悉 SQL Database 營運卓越資源: 檢閱 SQL Database 中的監視和效能微調 一文。 本文包含詳細的監視指引,包括監視查詢效能、設定警示,以及使用自動調整來提升效率的建議。

  • 使用基礎結構即程序代碼 (IaC) 技術: 使用 Bicep 和 Azure Resource Manager 範本 等 IaC 技術來部署 Azure SQL 資料庫,以達到一致的結果,並利用可重複使用性。

    使用最新版的 Resource Manager API,利用最新的功能、安全性更新和效能改善。

  • 監視您的 SQL Database: 使用監視來偵測可靠性事件並優化效能。 從監視工作負載所使用的CPU和輸入/輸出資源開始。 如需為工作負載設計可靠性和健康情況監視解決方案的協助,請參閱 工作負載的健康情況模型化

  • 優化商務持續性和災害復原的管理: 使用 Azure 備份來保護 SQL Database,並定期測試您的備份策略。

  • 使用原生資料庫管理功能: 採用 SQL Database 來減輕資料庫管理員的許多傳統工作,例如基礎結構相關管理、備份管理,以及高可用性和災害復原作業。 鼓勵他們在雲端原生系統管理中成長,並在採用數據即程式代碼思維時與 DevOps 小組整合。

組態建議

Recommendation Benefit
使用資料庫監看員等工具來監視 SQL Database,以偵測可靠性事件。 快速偵測可靠性事件可讓您及時找出並解決效能問題,進而將工作負載中斷降到最低。
使用 持續整合和持續部署工作流程 來簡化 SQL 專案的部署程式。 可重複的工作流程可釋放變更,可將人為介入的需求降到最低,並減少錯誤的可能性。 此方法可確保更可靠且有效率的部署程式。
使用 Azure 備份 來備份 SQL Database 伺服器。 Azure 備份可讓您集中管理商務持續性和災害復原,以便有效率地監督備份作業。 Azure 備份支持復原點的長期保留,以確保您的數據會被長期保存。 它也會執行跨區域和跨訂用帳戶還原,以增強備份策略的彈性和復原能力。

效能效率

效能效率關乎 即使負載增加時,仍能透過管理容量來維持用戶體驗。 此策略包括調整資源、識別和優化潛在的瓶頸,以及優化尖峰效能。

效能效率設計原則 提供針對預期使用量達成這些容量目標的高階設計策略。

工作負載設計檢查清單

根據 效能效率的設計檢閱檢查清單,以 SQL Database 的關鍵效能指標為基礎來定義基準,開始您的設計策略。

組態建議

Recommendation Benefit
套用 效能建議 以優化 SQL Database 或解決工作負載問題。 使用這些建議來改善資料庫效能。
設定 自動調整 以自動優化資料庫效能。 自動調整是監視查詢、適應變更工作負載,以及自動套用微調建議的功能。 根據 AI 和機器學習進行持續效能微調,可以優化效能並穩定工作負載。
使用 查詢存放區 來協助優化查詢的效能。 查詢存放區可協助您快速找出查詢計劃變更所造成的效能差異,以簡化效能疑難解答。 查詢存放區會持續收集所有查詢的詳細資訊。 此功能可簡化查詢效能的疑難解答,因為您可以使用這項資訊來快速診斷和解決查詢效能問題。
使用 查詢效能深入解析 工具來識別工作負載中最耗用資源且長時間執行的查詢。 查詢效能洞察提供有關 CPU、持續時間和執行次數的資料庫查詢詳細數據。 您可以檢視資源使用量的歷程記錄。 查詢效能分析提供對資料庫查詢指標的深入洞察,例如 CPU、執行時間和執行次數。 這項功能可減少您花費針對資料庫效能進行疑難解答的時間。
使用內建工具來 診斷與排除高 CPU 使用量的問題。 這些工具可協助識別高CPU使用量的原因,並將 Transact-SQL 查詢優化。 適當調整的應用程式和資料庫會導致更有效率的作業,並可能降低成本。
了解 封鎖死結 問題如何影響您的資料庫效能。 解決封鎖和死結問題可協助資料庫更有效率地運作、消除瓶頸並改善效能。
檢閱 Azure 入口網站使用量報告,並視需要調整 單一資料庫彈性集區 定期檢閱使用量報告,以確保您有效率地使用資源。 這種做法有助於識別使用量過低的資源,進而降低成本。
在高效能、在線事務處理應用程式和即時分析等案例中,使用 記憶體內部資料庫對象 來增強工作負載的效能。 記憶體內部技術可讓您改善工作負載的效能,並可能降低資料庫成本。

Azure 原則

Azure 提供一組與 SQL Database 相關的大量內建原則。 一組 Azure 原則可以稽核上述一些建議。 例如,您可以檢查是否:

  • 建立期間預設會啟用 Microsoft Entra 僅限驗證。
  • 區域備援已啟用,可增強可用性和復原能力。
  • 應針對 Azure SQL 資料庫啟用長期異地備援備份。
  • 將最低 TLS 版本設定為 1.2 可藉由確保只能從使用 TLS 1.2 的用戶端存取 SQL Database 來改善安全性。 請勿使用舊版 TLS,因為它們有妥善記載的安全性弱點。
  • SQL 伺服器應該已啟用稽核,以確保您記錄對 SQL 資產的所有操作。

如需完整的治理,請檢閱 Azure 原則內建定義中列出的 SQL Database 原則內建定義。

Azure Advisor 建議

Azure Advisor 是個人化的雲端顧問,可協助您遵循最佳做法來優化 Azure 部署。

如需詳細資訊,請參閱 Azure Advisor

範例架構

示範重要建議的基礎架構: 基準高可用性區域備援 Web 應用程式