탄력적 풀이 Azure SQL Database의 여러 데이터베이스를 관리하고 크기를 조정하는 데 도움을 주는 방식Elastic pools help you manage and scale multiple databases in Azure SQL Database

적용 대상: Azure SQL Database

Azure SQL Database 탄력적 풀은 다양 하 고 예측할 수 없는 사용 요구가 있는 여러 데이터베이스를 관리 하 고 크기를 조정 하는 간단 하 고 비용 효율적인 솔루션입니다.Azure SQL Database elastic pools are a simple, cost-effective solution for managing and scaling multiple databases that have varying and unpredictable usage demands. 탄력적 풀의 데이터베이스는 단일 서버에 있으며 설정 된 가격으로 설정 된 수의 리소스를 공유 합니다.The databases in an elastic pool are on a single server and share a set number of resources at a set price. Azure SQL Database의 탄력적 풀을 사용하면 SaaS 개발자가 각각의 데이터베이스에 성능 탄력성을 제공하는 동시에 규정된 예산 내의 데이터베이스 그룹에 가격 성능을 최적화할 수 있습니다.Elastic pools in Azure SQL Database enable SaaS developers to optimize the price performance for a group of databases within a prescribed budget while delivering performance elasticity for each database.

SQL 탄력적 풀이란?What are SQL elastic pools

SaaS 개발자는 여러 데이터베이스로 구성된 대규모 데이터 계층에 애플리케이션을 작성합니다.SaaS developers build applications on top of large scale data-tiers consisting of multiple databases. 일반적인 애플리케이션 패턴은 각 고객에 대해 단일 데이터베이스를 프로비전합니다.A common application pattern is to provision a single database for each customer. 그러나 다른 고객에 게는 다양 하 고 예측할 수 없는 사용 패턴이 있는 경우가 많으며 각 개별 데이터베이스 사용자의 리소스 요구 사항을 예측 하기 어렵습니다.But different customers often have varying and unpredictable usage patterns, and it's difficult to predict the resource requirements of each individual database user. 일반적으로 두 가지 옵션이 있습니다.Traditionally, you had two options:

  • 최대 사용량에 따른 리소스 오버프로비저닝과 과다 지불 또는Over-provision resources based on peak usage and over pay, or
  • 최대 사용 기간 동안 성능 및 고객 만족은 저하되지만 비용을 절감하는 언더프로비저닝Under-provision to save cost, at the expense of performance and customer satisfaction during peaks.

탄력적 풀은 데이터베이스가 필요한 성능 리소스를 필요할 때 얻도록 하여 이 문제를 해결합니다.Elastic pools solve this problem by ensuring that databases get the performance resources they need when they need it. 예측 가능한 예산 내에서 간단한 리소스 할당 메커니즘을 제공합니다.They provide a simple resource allocation mechanism within a predictable budget. 탄력적 풀을 사용한 SaaS 애플리케이션의 디자인 패턴에 대해 자세히 알아보려면 Azure SQL Database를 사용한 다중 테넌트 SaaS 애플리케이션 디자인 패턴을 참조하세요.To learn more about design patterns for SaaS applications using elastic pools, see Design Patterns for Multi-tenant SaaS Applications with Azure SQL Database.

중요

탄력적 풀에 대한 데이터베이스별 요금은 없습니다.There is no per-database charge for elastic pools. 사용량에 관계없이 또는 풀이 한 시간 미만 동안 활성 상태였는지 여부에 관계없이 풀이 최고 eDTU 또는 vCore 수에 있었던 시간에 대해 시간당 요금이 청구됩니다.You are billed for each hour a pool exists at the highest eDTU or vCores, regardless of usage or whether the pool was active for less than an hour.

탄력적 풀을 사용하면 개발자가 예측할 수 없는 개별 데이터베이스의 사용 기간을 수용하기 위해 여러 데이터베이스에서 공유되는 풀에 대한 리소스를 구매할 수 있습니다.Elastic pools enable the developer to purchase resources for a pool shared by multiple databases to accommodate unpredictable periods of usage by individual databases. DTU 기반 구매 모델 또는 vCore 기반 구매 모델에 따라 풀에 대한 리소스를 구성할 수 있습니다.You can configure resources for the pool based either on the DTU-based purchasing model or the vCore-based purchasing model. 풀에 대한 리소스 요구 사항은 해당 데이터베이스의 집계 사용률에 의해 결정됩니다.The resource requirement for a pool is determined by the aggregate utilization of its databases. 풀에 사용 가능한 리소스 양은 개발자 예산에 의해 제어됩니다.The amount of resources available to the pool is controlled by the developer budget. 개발자는 단순히 풀에 데이터베이스를 추가 하 고, 필요에 따라 데이터베이스에 대 한 최소 및 최대 리소스 (선택한 높아지면 모델에 따라 최소 및 최대 Dtu 또는 최소 또는 최대 vCores)를 설정 하 고, 해당 예산에 따라 풀의 리소스를 설정 합니다.The developer simply adds databases to the pool, optionally sets the minimum and maximum resources for the databases (either minimum and maximum DTUs or minimum or maximum vCores depending on your choice of resourcing model), and then sets the resources of the pool based on their budget. 개발자는 풀을 사용하여 처음 시작부터 계속 성장하는 성숙한 비즈니스까지 해당 서비스를 원활하게 증가시킬 수 있습니다.A developer can use pools to seamlessly grow their service from a lean startup to a mature business at ever-increasing scale.

풀 내에서 개별 데이터베이스는 집합 매개 변수 내에서 자동 크기 조정에 유연성이 제공됩니다.Within the pool, individual databases are given the flexibility to auto-scale within set parameters. 부하가 높은 상태에서 데이터베이스는 더 많은 리소스를 사용하여 수요를 충족할 수 있습니다.Under heavy load, a database can consume more resources to meet demand. 낮은 부하량에서 데이터베이스는 적게 사용하고 부하가 없는 데이터베이스는 리소스를 사용하지 않습니다.Databases under light loads consume less, and databases under no load consume no resources. 단일 데이터베이스가 아닌 전체 풀에 대한 리소스 프로비저닝은 관리 작업을 간소화합니다.Provisioning resources for the entire pool rather than for single databases simplifies your management tasks. 또한 풀에 대한 예측 가능한 예산이 있습니다.Plus, you have a predictable budget for the pool. 최소 가동 중지 시간으로 추가 리소스를 기존 풀에 추가할 수 있습니다.Additional resources can be added to an existing pool with minimum downtime. 마찬가지로, 추가 리소스가 더 이상 필요하지 않은 경우에는 언제든지 기존 풀에서 제거할 수 있습니다.Similarly, if extra resources are no longer needed they can be removed from an existing pool at any point in time. 그리고 풀에서 데이터베이스를 추가 하거나 제거할 수 있습니다.And you can add or remove databases from the pool. 데이터베이스가 예측 가능한 방식으로 리소스를 사용하는 경우 리소스를 이동합니다.If a database is predictably under-utilizing resources, move it out.

참고

데이터베이스를 탄력적 풀 안팎으로 이동하는 경우, 데이터베이스 연결이 끊길 때 작업이 종료되는 잠깐의 시간(초 단위)을 제외하고 가동 중지 시간이 발생하지 않습니다.When moving databases into or out of an elastic pool, there is no downtime except for a brief period of time (on the order of seconds) at the end of the operation when database connections are dropped.

SQL Database 탄력적 풀은 언제 고려해야 하나요?When should you consider a SQL Database elastic pool

풀은 특정 사용 패턴을 보이는 다수의 데이터베이스에 적합합니다.Pools are well suited for a large number of databases with specific utilization patterns. 주어진 데이터 베이스에 대해, 이 패턴은 상대적으로 사용률 급증이 드물고 평균 사용률이 낮음으로 규정됩니다.For a given database, this pattern is characterized by low average utilization with relatively infrequent utilization spikes. 반대로, 영구 중간 사용률이 높은 여러 데이터베이스는 동일한 탄력적 풀에 배치 하면 안 됩니다.Conversely, multiple databases with persistent medium-high utilization should not be placed in the same elastic pool.

풀에 더 많은 데이터베이스를 추가할수록 절감이 커집니다.The more databases you can add to a pool the greater your savings become. 응용 프로그램 사용 패턴에 따라 두 개의 S3 데이터베이스를 사용 하 여 절감 액을 볼 수 있습니다.Depending on your application utilization pattern, it's possible to see savings with as few as two S3 databases.

다음 섹션에서는 데이터베이스의 특정 컬렉션이 풀에 있는 것이 이득이 될 수 있는지 평가하는 방법을 이해할 수 있습니다.The following sections help you understand how to assess if your specific collection of databases can benefit from being in a pool. 예제에서는 표준 풀을 사용하지만 기본 및 프리미엄 풀에도 동일한 원칙이 적용됩니다.The examples use Standard pools but the same principles also apply to Basic and Premium pools.

데이터베이스 사용량 패턴 평가Assessing database utilization patterns

다음 그림에는 대부분의 시간을 유휴 상태로 있지만 정기적으로 갑작스러운 활동이 증가하는 데이터베이스의 예가 나와있습니다.The following figure shows an example of a database that spends much time idle, but also periodically spikes with activity. 다음은 풀에 적합한 사용률 패턴입니다.This is a utilization pattern that is suited for a pool:

풀에 적합한 단일 데이터베이스

이 차트에서는 각 데이터 요소에 1 분 세분성이 있는 1 시간 동안 12:00에서 1:00 까지의 DTU 사용량을 보여 줍니다.The chart illustrates DTU usage over a 1 hour time period from 12:00 to 1:00 where each data point has 1 minute granularity. 12:10에 최대 90 Dtu가 DB1 전체 평균 사용량은 5 개 Dtu 보다 낮습니다.At 12:10 DB1 peaks up to 90 DTUs, but its overall average usage is less than five DTUs. 단일 데이터베이스에서 이 워크로드를 실행하려면 S3 컴퓨팅 크기가 필요하지만 활동이 적은 기간 동안 리소스의 대부분을 사용하지 않게 됩니다.An S3 compute size is required to run this workload in a single database, but this leaves most of the resources unused during periods of low activity.

풀을 사용하면 이러한 사용하지 않는 DTU를 여러 데이터베이스에서 공유할 수 있으므로 필요한 DTU 및 전체 비용을 줄일 수 있습니다.A pool allows these unused DTUs to be shared across multiple databases, and so reduces the DTUs needed and overall cost.

앞의 예제에 기초하여, DB1같은 유사한 사용률 패턴의 추가 데이터베이스가 있다고 가정합니다.Building on the previous example, suppose there are additional databases with similar utilization patterns as DB1. 아래 두 그림에서 4개의 데이터베이스 사용률 및 20개의 데이터베이스는 동일한 그래프에 계층화되어 시간에 따라 DTU 기반 구매 모델을 사용하여 해당 사용률의 특성이 겹치지 않는다는 것을 설명합니다.In the next two figures below, the utilization of four databases and 20 databases are layered onto the same graph to illustrate the non-overlapping nature of their utilization over time using the DTU-based purchasing model:

풀에 적합한 사용 패턴을 가진 네 개의 데이터베이스

풀에 적합한 사용 패턴을 가진 20개의 데이터베이스

전체 20개 데이터베이스의 총 DTU 사용률은 위 그림에서 검은색 선으로 표시되었습니다.The aggregate DTU utilization across all 20 databases is illustrated by the black line in the preceding figure. 이는 DTU 사용률 집계가 100 DTU를 초과하지 않음을 보여 주며, 이 기간 동안 20개 데이터베이스가 100 eDTU를 공유할 수 있음을 나타냅니다.This shows that the aggregate DTU utilization never exceeds 100 DTUs, and indicates that the 20 databases can share 100 eDTUs over this time period. 이렇게 하면 각 데이터베이스를 단일 데이터베이스용 S3 컴퓨팅 크기에 배치할 때와 비교하여 DTU가 1/20, 가격이 1/13로 감소합니다.This results in a 20x reduction in DTUs and a 13x price reduction compared to placing each of the databases in S3 compute sizes for single databases.

이 예는 다음 이유로 이상적입니다.This example is ideal for the following reasons:

  • 최고사용률과 데이터베이스당 평균 사용률간에 큰 차이가 있습니다.There are large differences between peak utilization and average utilization per database.
  • 각 데이터베이스의 최고 사용률이 시간 내에 여러 지점에서 발생합니다.The peak utilization for each database occurs at different points in time.
  • eDTU는 많은 데이터베이스 간에 공유됩니다.eDTUs are shared between many databases.

DTU 구매 모델에서 풀의 가격은 풀 Edtu의 기능입니다.In the DTU purchasing model, the price of a pool is a function of the pool eDTUs. 풀의 eDTU 단가는 단일 데이터베이스에 대한 DTU 단가보다 1.5배지만, 많은 데이터베이스가 풀 eDTU를 공유할 수 있고 필요한 전체 eDTU가 적습니다.While the eDTU unit price for a pool is 1.5x greater than the DTU unit price for a single database, pool eDTUs can be shared by many databases and fewer total eDTUs are needed. 가격 책정 및 eDTU 공유에서의 이러한 차이가 풀이 제공할 수 있는 가격 절감 가능성의 기초가 됩니다.These distinctions in pricing and eDTU sharing are the basis of the price savings potential that pools can provide.

VCore 구매 모델에서 탄력적 풀에 대 한 vCore 단가는 단일 데이터베이스에 대 한 vCore 단가와 동일 합니다.In the vCore purchasing model, the vCore unit price for elastic pools is the same as the vCore unit price for single databases.

올바른 풀 크기를 선택하려면 어떻게 해야 하나요?How do I choose the correct pool size

풀의 적절한 크기는 풀의 모든 데이터베이스에 필요한 집계 리소스에 따라 달라집니다.The best size for a pool depends on the aggregate resources needed for all databases in the pool. 이는 다음 결정을 포함합니다.This involves determining the following:

  • 풀의 모든 데이터베이스에서 사용 되는 최대 계산 리소스입니다.Maximum compute resources utilized by all databases in the pool. 계산 리소스는 선택한 구매 모델에 따라 Edtu 또는 vCores를 통해 인덱싱됩니다.Compute resources are indexed by either eDTUs or vCores depending on your choice of purchasing model.
  • 풀에 있는 모든 데이터베이스의 최대 스토리지된 바이트 수입니다.Maximum storage bytes utilized by all databases in the pool.

각 구매 모델의 서비스 계층 및 리소스 제한에 대해서는 DTU 기반 구매 모델 또는 vcore 기반 구매 모델을 참조 하세요.For service tiers and resource limits in each purchasing model, see the DTU-based purchasing model or the vCore-based purchasing model.

다음 단계는 풀이 단일 데이터베이스 보다 비용 효율적인 지 여부를 예측 하는 데 도움이 될 수 있습니다.The following steps can help you estimate whether a pool is more cost-effective than single databases:

  1. 다음 수식에 따라 풀에 필요한 eDTU 또는 vCore를 예측합니다.Estimate the eDTUs or vCores needed for the pool as follows:
    • DTU 기반 구매 모델의 경우:For the DTU-based purchasing model:
      • 최대 (< × db 당 총 db 평균 dtu 사용률>, <동시 최고 db 최대 × dtu 사용률>)MAX(<Total number of DBs × Average DTU utilization per DB>, <Number of concurrently peaking DBs × Peak DTU utilization per DB>)
    • VCore 기반 구매 모델의 경우:For the vCore-based purchasing model:
      • 최대 (< × db 당 총 db 평균 vcore 사용률>, <동시 최고 db × 최대 vcore 사용률>)MAX(<Total number of DBs × Average vCore utilization per DB>, <Number of concurrently peaking DBs × Peak vCore utilization per DB>)
  2. 풀에 있는 모든 데이터베이스에 필요한 데이터 크기를 추가 하 여 풀에 필요한 총 저장소 공간을 예상 합니다.Estimate the total storage space needed for the pool by adding the data size needed for all the databases in the pool. DTU 구매 모델의 경우이 저장소 크기를 제공 하는 eDTU 풀 크기를 확인 합니다.For the DTU purchasing model, then determine the eDTU pool size that provides this amount of storage.
  3. DTU 기반 구매 모델의 경우 1단계 및 2단계에서 eDTU 예상 중 큰 수를 사용합니다.For the DTU-based purchasing model, take the larger of the eDTU estimates from Step 1 and Step 2. VCore 기반 구매 모델의 경우 1단계의 vCore 예상을 사용합니다.For the vCore-based purchasing model, take the vCore estimate from Step 1.
  4. SQL Database 가격 책정 페이지를 확인하고 3단계의 예상보다 큰 경우 가장 작은 풀 크기를 찾습니다.See the SQL Database pricing page and find the smallest pool size that is greater than the estimate from Step 3.
  5. 4 단계의 풀 가격과 단일 데이터베이스의 적절 한 계산 크기를 사용 하는 가격을 비교 합니다.Compare the pool price from Step 4 to the price of using the appropriate compute sizes for single databases.

중요

풀의 데이터베이스 수가 지원 되는 최대 크기에 도달 하는 경우에는 조밀한 탄력적 풀에서 리소스 관리를 고려 해야 합니다.If the number of databases in a pool approaches the maximum supported, make sure to consider Resource management in dense elastic pools.

탄력적 풀과 기타 SQL Database 기능 사용Using other SQL Database features with elastic pools

탄력적 작업 및 탄력적 풀Elastic jobs and elastic pools

풀을 통해 탄력적 작업 의 스크립트를 실행하여 관리 작업이 간소화됩니다.With a pool, management tasks are simplified by running scripts in elastic jobs. 탄력적 작업은 많은 수의 데이터베이스와 관련된 번거로움을 대부분 없애 줍니다.An elastic job eliminates most of tedium associated with large numbers of databases.

여러 데이터베이스를 사용하기 위한 다른 데이터베이스 도구에 대한 자세한 내용은 Azure SQL Database를 사용하여 확장을 참조합니다.For more information about other database tools for working with multiple databases, see Scaling out with Azure SQL Database.

탄력적 풀의 데이터베이스에 대한 비즈니스 연속성 옵션Business continuity options for databases in an elastic pool

풀링된 데이터베이스는 일반적으로 단일 데이터베이스에서 사용할 수 있는 동일한 비즈니스 연속성 기능을 지원합니다.Pooled databases generally support the same business continuity features that are available to single databases.

Azure Portal을 사용하여 새 SQL Database 탄력적 풀 만들기Creating a new SQL Database elastic pool using the Azure portal

Azure Portal에서 두 가지 방법으로 탄력적 풀을 만들 수 있습니다.There are two ways you can create an elastic pool in the Azure portal.

  1. Azure Portal 로 이동 하 여 탄력적 풀을 만듭니다.Go to the Azure portal to create an elastic pool. AZURE SQL 을 검색 하 고 선택 합니다.Search for and select Azure SQL.

  2. +추가 를 선택하여 SQL 배포 옵션 선택 페이지를 엽니다.Select +Add to open the Select SQL deployment option page. 데이터베이스 타일에 대 한 자세한 정보 표시 를 선택 하 여 탄력적 풀에 대 한 추가 정보를 볼 수 있습니다.You can view additional information about elastic pools by selecting Show details on the Databases tile.

  3. 데이터베이스 타일의 리소스 종류 드롭다운에서 탄력적 풀 을 선택 하 고 만들기 를 선택 합니다.On the Databases tile, select Elastic pool in the Resource type dropdown, then select Create:

    탄력적 풀 만들기

  4. 또는 기존 서버로 이동 하 고 + 새 풀 을 클릭 하 여 해당 서버에 직접 풀을 만드는 방식으로 탄력적 풀을 만들 수 있습니다.Or you can create an elastic pool by navigating to an existing server and clicking + New pool to create a pool directly into that server.

참고

서버에 풀을 여러 개 만들 수 있지만 다른 서버에 속하는 데이터베이스를 동일한 풀에 추가할 수 없습니다.You can create multiple pools on a server, but you can't add databases from different servers into the same pool.

풀의 서비스 계층에 따라 풀에 있는 탄력적 데이터베이스에서 사용 가능한 기능과 각 데이터베이스에서 사용 가능한 최대 리소스 양이 결정됩니다.The pool's service tier determines the features available to the elastics in the pool, and the maximum amount of resources available to each database. 자세한 내용은 DTU 모델에서 탄력적 풀에 대한 리소스 제한을 참조하세요.For details, see Resource limits for elastic pools in the DTU model. 탄력적 풀에 대한 vCore 기반 리소스 제한은 vCore 기반 리소스 제한 - 탄력적 풀을 참조하세요.For vCore-based resource limits for elastic pools, see vCore-based resource limits - elastic pools.

리소스 및 풀의 가격 책정을 구성하려면 풀 구성 을 클릭합니다.To configure the resources and pricing of the pool, click Configure pool. 그런 다음, 서비스 계층을 선택하고, 풀에 데이터베이스를 추가하고, 풀과 해당 데이터베이스에 대한 리소스 제한을 구성합니다.Then select a service tier, add databases to the pool, and configure the resource limits for the pool and its databases.

풀 구성을 완료하면 '적용'을 클릭하고, 풀의 이름을 지정하고, '확인'을 클릭하여 풀을 만들 수 있습니다.When you have completed configuring the pool, you can click 'Apply', name the pool, and click 'OK' to create the pool.

탄력적 풀 및 해당 데이터베이스 모니터링Monitor an elastic pool and its databases

Azure Portal에서 탄력적 풀 및 해당 풀 내의 데이터베이스의 사용률을 모니터링할 수 있습니다.In the Azure portal, you can monitor the utilization of an elastic pool and the databases within that pool. 탄력적 풀에 일련의 내용을 변경하는 동시에 모든 변경 내용을 전송할 수도 있습니다.You can also make a set of changes to your elastic pool and submit all changes at the same time. 이러한 변경 내용에는 데이터베이스 추가 또는 제거, 탄력적 풀 설정 변경, 데이터베이스 설정 변경이 포함됩니다.These changes include adding or removing databases, changing your elastic pool settings, or changing your database settings.

성능 등급과 결합 된 기본 제공 성능 모니터링경고 도구를 사용할 수 있습니다.You can use the built-in performance monitoring and alerting tools, combined with performance ratings. 또한 SQL Database는 쉬운 모니터링을 위해 메트릭 및 리소스 로그를 내보낼 수 있습니다.Additionally, SQL Database can emit metrics and resource logs for easier monitoring.

고객 사례 연구Customer case studies

  • SnelStartSnelStart

    SnelStart는 Azure SQL Database에서 탄력적 풀을 사용 하 여 매월 1000 개의 새 Azure SQL database의 속도로 비즈니스 서비스를 빠르게 확장 했습니다.SnelStart used elastic pools with Azure SQL Database to rapidly expand its business services at a rate of 1,000 new Azure SQL databases per month.

  • UmbracoUmbraco

    Umbraco는 Azure SQL Database에서 탄력적 풀을 사용 하 여 클라우드에서 수천 개의 테 넌 트에 대해 서비스를 신속 하 게 프로 비전 하 고 확장 합니다.Umbraco uses elastic pools with Azure SQL Database to quickly provision and scale services for thousands of tenants in the cloud.

  • Daxko/CSIDaxko/CSI

    Daxko/CSI는 Azure SQL Database에서 탄력적 풀을 사용 하 여 개발 주기를 가속화 하 고 고객 서비스 및 성능을 향상 시킵니다.Daxko/CSI uses elastic pools with Azure SQL Database to accelerate its development cycle and to enhance its customer services and performance.

다음 단계Next steps