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