適用于:Azure SQL數(shù)據(jù)庫
Azure SQL數(shù)據(jù)庫彈性池是一種簡(jiǎn)單且經(jīng)濟(jì)高效的解決方案,用于管理和縮放具有不斷變化且不可預(yù)測(cè)的使用需求的多個(gè)數(shù)據(jù)庫。同一彈性池中的所有數(shù)據(jù)庫位于單個(gè)服務(wù)器上,并以固定價(jià)格共享固定數(shù)量的資源。Azure SQL數(shù)據(jù)庫中的彈性池可使SaaS開發(fā)人員將一組數(shù)據(jù)庫的價(jià)格性能優(yōu)化在規(guī)定的預(yù)算內(nèi),同時(shí)為每個(gè)數(shù)據(jù)庫提供性能彈性。
什么是SQL彈性池
SaaS開發(fā)人員構(gòu)建在由多個(gè)數(shù)據(jù)庫組成的大規(guī)模數(shù)據(jù)層上的應(yīng)用程序。常見的應(yīng)用程序模式是為每位客戶設(shè)置單一數(shù)據(jù)庫。但不同的客戶通常有不同的和不可預(yù)測(cè)的使用模式,并且很難預(yù)測(cè)每個(gè)數(shù)據(jù)庫用戶的資源需求。傳統(tǒng)上,有兩個(gè)選擇:
·基于高峰使用情況和付款情況過度預(yù)配資源或
·采用低配節(jié)省成本,但這樣會(huì)犧牲高峰期的性能和客戶滿意度。
彈性池通過確保數(shù)據(jù)庫獲取需要時(shí)所需的性能資源來解決這個(gè)問題。它們提供了一個(gè)可預(yù)測(cè)預(yù)算內(nèi)的簡(jiǎn)單的資源分配機(jī)制。若要深入了解如何通過彈性池設(shè)計(jì)SaaS應(yīng)用程序的模式,請(qǐng)參閱具有Azure SQL數(shù)據(jù)庫的多租戶SaaS應(yīng)用程序的設(shè)計(jì)模式。
重要
彈性池沒有按照數(shù)據(jù)庫收取的費(fèi)用。對(duì)于池存在的每個(gè)小時(shí),需要支付最高的eDTU或vCore費(fèi)用,無論使用量是多少,也不管池處于活動(dòng)狀態(tài)的時(shí)間是否小于一小時(shí)。
彈性池可讓開發(fā)人員為由多個(gè)數(shù)據(jù)庫共享的池購買資源,以適應(yīng)單一數(shù)據(jù)庫使用時(shí)段不可預(yù)測(cè)的情況。可以根據(jù)基于DTU的購買模型或基于vCore的購買模型為池配置資源。池的資源要求取決于其數(shù)據(jù)庫的聚合使用量。池可用的資源數(shù)量由開發(fā)者預(yù)算控制。開發(fā)者只需將數(shù)據(jù)庫添加到池,根據(jù)需要為數(shù)據(jù)庫設(shè)置最小和最大資源(最小和最大DTU數(shù),或者最小或最大vCore數(shù),具體取決于所選的資源模型),然后基于預(yù)算設(shè)置池的資源。開發(fā)人員可以使用池順暢地?cái)U(kuò)大其服務(wù),以漸增的規(guī)模從精簡(jiǎn)的新創(chuàng)公司發(fā)展到成熟的企業(yè)。
在池中,單獨(dú)的數(shù)據(jù)庫都被賦予了在固定參數(shù)內(nèi)自動(dòng)縮放的靈活性。高負(fù)荷下的數(shù)據(jù)庫可能會(huì)消耗更多的資源以滿足需求。低負(fù)荷下的數(shù)據(jù)庫消耗較少的資源,沒有任何負(fù)荷的數(shù)據(jù)庫不會(huì)消耗任何資源。設(shè)置整個(gè)池(而非單個(gè)數(shù)據(jù)庫)的資源簡(jiǎn)化了管理任務(wù)。此外,必須具有該池的可預(yù)測(cè)預(yù)算??稍诠收蠒r(shí)間最短的情況下向現(xiàn)有池添加其他資源。同樣,隨時(shí)可以從現(xiàn)有池中刪除不再需要的額外資源。并且可以從池中添加或刪除數(shù)據(jù)庫。如果可以預(yù)測(cè)到數(shù)據(jù)庫的資源利用率不足,則將其移出。
備注
將數(shù)據(jù)庫移入或移出彈性池時(shí),除了在操作結(jié)束時(shí)刪除數(shù)據(jù)庫連接時(shí)有短暫的停機(jī)時(shí)間(大約為幾秒)外,幾乎沒有停機(jī)時(shí)間。
何時(shí)應(yīng)當(dāng)考慮使用SQL數(shù)據(jù)庫彈性池
池很適合具有特定使用模式的大量數(shù)據(jù)庫。對(duì)于給定的數(shù)據(jù)庫,此模式的特征是低平均使用量與相對(duì)不頻繁的使用高峰。相反,具有持久性中-高利用率的多個(gè)數(shù)據(jù)庫不應(yīng)放在同一彈性池中。
可以加入池的數(shù)據(jù)庫越多,就可以節(jié)省更多的成本。可能只需兩個(gè)S3數(shù)據(jù)庫就可以節(jié)省開支,具體取決于應(yīng)用程序使用模式。
以下各部分有助于了解如何評(píng)估特定的數(shù)據(jù)庫集合是否會(huì)因使用池而受益。這些示例使用標(biāo)準(zhǔn)池,但同樣的原理也適用于基本和高級(jí)池。
評(píng)估數(shù)據(jù)庫使用模式
下圖顯示了一個(gè)數(shù)據(jù)庫示例,該數(shù)據(jù)庫有大量的閑置時(shí)間,但也會(huì)定期出現(xiàn)活動(dòng)高峰。這是適合池的使用模式:
該圖顯示了從12:00到1:00的1小時(shí)內(nèi)的DTU使用情況,其中每個(gè)數(shù)據(jù)點(diǎn)的粒度為1分鐘。在12:10,DB1使用的DTU個(gè)數(shù)達(dá)到峰值(90個(gè)DTU),但其整體平均使用量低于五個(gè)DTU。在單一數(shù)據(jù)庫中運(yùn)行此工作負(fù)荷需要S3計(jì)算大小,但在低活動(dòng)期間,這可使大多數(shù)資源處于未使用狀態(tài)。
池可讓這些未使用的DTU跨多個(gè)數(shù)據(jù)庫共享,因此減少了所需的DTU數(shù)和總體成本。
以上一個(gè)示例為基礎(chǔ),假設(shè)有其他數(shù)據(jù)庫具有與DB1類似的使用模式。在接下來的兩個(gè)圖中,4個(gè)數(shù)據(jù)庫和20個(gè)數(shù)據(jù)庫的使用量分層放在同一圖形中,以演示在使用基于DTU的購買模型時(shí)數(shù)據(jù)庫使用量在整個(gè)時(shí)間段上非重疊的性質(zhì):
在上圖中,黑線表示跨所有20個(gè)數(shù)據(jù)庫的聚合DTU使用量。其中表明聚合DTU使用量永遠(yuǎn)不會(huì)超過100個(gè)DTU,并指出20個(gè)數(shù)據(jù)庫可以在此時(shí)間段內(nèi)共享100個(gè)eDTU。相比于將每個(gè)數(shù)據(jù)庫放入單一數(shù)據(jù)庫的S3計(jì)算大小,這會(huì)導(dǎo)致DTU減少20倍和價(jià)格降低13倍。
由于以下原因,此示例很理想:
·每一數(shù)據(jù)庫之間的高峰使用量和平均使用量有相當(dāng)大的差異。
·每個(gè)數(shù)據(jù)庫的高峰使用量在不同時(shí)間點(diǎn)發(fā)生。
·eDTU會(huì)在多個(gè)數(shù)據(jù)庫之間共享。
在DTU購買模型中,池的價(jià)格是池Edtu的一項(xiàng)功能。盡管池的eDTU單位價(jià)格比單一數(shù)據(jù)庫的DTU單位價(jià)格多1.5倍,但池eDTU可由多個(gè)數(shù)據(jù)庫共享,因而所需的eDTU總數(shù)更少。定價(jià)方面和eDTU共享的這些差異是池可以提供成本節(jié)省可能性的基礎(chǔ)。
在vCore購買模型中,彈性池的vCore單位價(jià)格與單一數(shù)據(jù)庫的vCore單位價(jià)格相同。
如何選擇正確的池大小
池的最佳大小取決于聚合池中所有數(shù)據(jù)庫所需的資源。這涉及到?jīng)Q定以下項(xiàng):
池中所有數(shù)據(jù)庫使用的最大計(jì)算資源。計(jì)算資源按Edtu或Vcore索引,具體取決于你選擇的購買模型。
池中所有數(shù)據(jù)庫使用的最大存儲(chǔ)字節(jié)。
對(duì)于每個(gè)購買模型中的服務(wù)層和資源限制,請(qǐng)參閱基于DTU的購買模型或基于vCore的購買模型。
以下步驟可幫助你評(píng)估池是否比單一數(shù)據(jù)庫更具成本效益:
1.通過如下方式來估算池所需的eDTU或vCore:
對(duì)于基于DTU的購買模型:
MAX(<數(shù)據(jù)庫的總數(shù)目X每一數(shù)據(jù)庫的平均DTU使用率>,<并發(fā)峰值數(shù)據(jù)庫數(shù)目X每一數(shù)據(jù)庫的峰值DTU使用率>)
對(duì)于基于vCore的購買模型:
MAX(<數(shù)據(jù)庫的總數(shù)目X每一數(shù)據(jù)庫的平均vCore使用率>,<并發(fā)峰值數(shù)據(jù)庫數(shù)目X每一數(shù)據(jù)庫的峰值vCore使用率>)
2.通過添加池中所有數(shù)據(jù)庫所需的數(shù)據(jù)大小來估算池所需的總存儲(chǔ)空間。對(duì)于DTU購買模型,確定提供此存儲(chǔ)量的eDTU池大小。
3.對(duì)于基于DTU的購買模型,請(qǐng)取步驟1和步驟2中eDTU估算值中較大的那個(gè)。對(duì)于基于vCore的購買模型,請(qǐng)取步驟1中的vCore估算值。
4.請(qǐng)參閱SQL數(shù)據(jù)庫定價(jià)頁,找到大于步驟3中估算值的最小池大小。
5.將步驟4中的池價(jià)格與單一數(shù)據(jù)庫的適當(dāng)計(jì)算大小進(jìn)行比較。
重要
如果池中數(shù)據(jù)庫的數(shù)量接近支持的最大值,請(qǐng)確保在密集彈性池中考慮資源管理。
將其他SQL數(shù)據(jù)庫功能與彈性池一起使用
彈性作業(yè)和彈性池
借助池,可以通過在elastic jobs。彈性作業(yè)可消除與大量數(shù)據(jù)庫有關(guān)的大部分問題。
有關(guān)用于操作多個(gè)數(shù)據(jù)庫的其他數(shù)據(jù)庫工具的詳細(xì)信息,請(qǐng)參閱使用Azure SQL數(shù)據(jù)庫進(jìn)行擴(kuò)展。
彈性池中的數(shù)據(jù)庫的業(yè)務(wù)連續(xù)性選項(xiàng)
共用數(shù)據(jù)庫通常支持和可用于單一數(shù)據(jù)庫相同的業(yè)務(wù)連續(xù)性功能。
·時(shí)間點(diǎn)還原
時(shí)間點(diǎn)還原使用自動(dòng)的數(shù)據(jù)庫備份將池中的數(shù)據(jù)庫恢復(fù)到特定的時(shí)間點(diǎn)。請(qǐng)參閱時(shí)間點(diǎn)還原
·異地還原
當(dāng)數(shù)據(jù)庫因其所在的區(qū)域發(fā)生事故而不可用時(shí),異地還原會(huì)提供默認(rèn)的恢復(fù)選項(xiàng)。請(qǐng)參閱還原Azure SQL數(shù)據(jù)庫或故障轉(zhuǎn)移到輔助數(shù)據(jù)庫
·活動(dòng)異地復(fù)制
對(duì)于具有異地還原無法提供的更強(qiáng)烈的恢復(fù)要求的應(yīng)用程序,請(qǐng)配置活動(dòng)異地復(fù)制或自動(dòng)故障轉(zhuǎn)移組。
使用Azure門戶創(chuàng)建新的SQL數(shù)據(jù)庫彈性池
在Azure門戶中可以通過兩種方法創(chuàng)建彈性池。
1.請(qǐng)參閱Azure門戶,創(chuàng)建彈性池。搜索并選擇"AZURE SQL"。
2.選擇“+添加”以打開“選擇SQL部署選項(xiàng)”頁。通過選擇"數(shù)據(jù)庫"磁貼上的"顯示詳細(xì)信息",可以查看有關(guān)彈性池的其他信息。
3.在"數(shù)據(jù)庫"磁貼上的"資源類型"下拉列表中選擇"彈性池",然后選擇"創(chuàng)建":
4.或者可以創(chuàng)建一個(gè)彈性池:導(dǎo)航到現(xiàn)有服務(wù)器,然后單擊“+新建池”,直接在該服務(wù)器中創(chuàng)建一個(gè)池。
備注
可以在服務(wù)器上創(chuàng)建多個(gè)池,但不能將數(shù)據(jù)庫從不同的服務(wù)器添加到同一個(gè)池中。
該池的服務(wù)層級(jí)決定了池中彈性數(shù)據(jù)庫的可用功能,以及每個(gè)數(shù)據(jù)庫可用的最大資源量。有關(guān)詳細(xì)信息,請(qǐng)參閱DTU模型中彈性池的資源限制。有關(guān)彈性池的基于vCore的資源限制,請(qǐng)參閱基于vCore的資源限制-彈性池。
若要配置池的資源和定價(jià),請(qǐng)單擊“配置池”。然后選擇服務(wù)層級(jí),將數(shù)據(jù)庫添加到池,并配置池及其數(shù)據(jù)庫的資源限制。
完成配置池后,可以單擊“應(yīng)用”,將池命名,然后單擊“確定”以創(chuàng)建池。
監(jiān)視彈性池及其數(shù)據(jù)庫
在Azure門戶中,可以監(jiān)視彈性池和該池中的數(shù)據(jù)庫的利用率。還可以對(duì)彈性池進(jìn)行一組更改,并同時(shí)提交所有更改。這些更改包括添加或刪除數(shù)據(jù)庫、更改彈性池設(shè)置或更改數(shù)據(jù)庫設(shè)置。
你可以使用內(nèi)置性能監(jiān)視和警報(bào)工具與性能等級(jí)結(jié)合使用。此外,SQL數(shù)據(jù)庫可發(fā)出指標(biāo)和資源日志,以方便進(jìn)行監(jiān)視。
客戶案例研究
SnelStart
SnelStart在Azure SQL數(shù)據(jù)庫中使用彈性池,以每月快速擴(kuò)展其業(yè)務(wù)服務(wù),每個(gè)Azure SQL數(shù)據(jù)庫1000。
Umbraco
Umbraco對(duì)Azure SQL數(shù)據(jù)庫使用彈性池,以便在云中為數(shù)千個(gè)租戶快速預(yù)配和縮放服務(wù)。
Daxko/CSI
Daxko/CSI使用彈性池和Azure SQL數(shù)據(jù)庫來加速其開發(fā)周期和增強(qiáng)其客戶服務(wù)和性能。