Los grupos elásticos ayudan a administrar y escalar varias bases de datos de Azure SQL DatabaseElastic pools help you manage and scale multiple databases in Azure SQL Database

SE APLICA A: Azure SQL Database

Los grupos elásticos de Azure SQL Database son una solución simple y rentable para la administración y escalado de varias bases de datos que tienen distintas e imprevisibles demandas de uso.Azure SQL Database elastic pools are a simple, cost-effective solution for managing and scaling multiple databases that have varying and unpredictable usage demands. En un grupo elástico, las bases de datos se encuentran en un único servidor y comparten un número establecido de recursos a un precio establecido.The databases in an elastic pool are on a single server and share a set number of resources at a set price. Los grupos elásticos en Azure SQL Database permiten a los desarrolladores de SaaS optimizar el rendimiento del precio para un grupo de bases de datos dentro de un presupuesto prescrito a la vez que se ofrece elasticidad de rendimiento para cada base de datos.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.

¿Qué son los grupos elásticos de SQL?What are SQL elastic pools

Los desarrolladores de SaaS crean aplicaciones en los niveles superiores de datos de la escala que constan de varias bases de datos.SaaS developers build applications on top of large scale data-tiers consisting of multiple databases. Un patrón de aplicación común es aprovisionar una base de datos única para cada cliente.A common application pattern is to provision a single database for each customer. Sin embargo, cada cliente suele tener patrones de uso variables e impredecibles y resulta difícil predecir los requisitos de recursos de cada usuario de bases de datos individuales.But different customers often have varying and unpredictable usage patterns, and it's difficult to predict the resource requirements of each individual database user. Tradicionalmente, había dos opciones:Traditionally, you had two options:

  • Aprovisionar recursos en exceso basándose en el uso máximo y pagando de más, oOver-provision resources based on peak usage and over pay, or
  • Aprovisionar por debajo de lo necesario para ahorrar costos a expensas del rendimiento y satisfacción del cliente durante las horas de máxima actividad.Under-provision to save cost, at the expense of performance and customer satisfaction during peaks.

Los grupos elásticos solucionan este problema y se aseguran de que las bases de datos obtengan los recursos de rendimiento que necesitan y en el momento en que los necesitan.Elastic pools solve this problem by ensuring that databases get the performance resources they need when they need it. Proporcionan un mecanismo de asignación de recursos simples dentro de un presupuesto predecible.They provide a simple resource allocation mechanism within a predictable budget. Para más información acerca de los modelos de diseño de las aplicaciones SaaS que usan grupos elásticos, consulte Modelos de diseño para aplicaciones SaaS multiinquilino con Azure SQL Database.To learn more about design patterns for SaaS applications using elastic pools, see Design Patterns for Multi-tenant SaaS Applications with Azure SQL Database.

Importante

No se realizan cargos por base de datos para los grupos elásticos.There is no per-database charge for elastic pools. Se le cobra por cada hora que un grupo exista en la eDTU o los núcleos virtuales más altos, con independencia del uso o de si el grupo estuvo activo durante menos de una hora.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.

Los grupos elásticos permiten al desarrollador adquirir recursos para un grupo compartido entre varias bases de datos con el fin de hacer frente a periodos impredecibles de uso por bases de datos individuales.Elastic pools enable the developer to purchase resources for a pool shared by multiple databases to accommodate unpredictable periods of usage by individual databases. Puede configurar los recursos para el grupo según el modelo de compra basado en DTU o el modelo de compra basado en núcleo virtual.You can configure resources for the pool based either on the DTU-based purchasing model or the vCore-based purchasing model. El requisito de recursos para un grupo viene determinado por el uso agregado de sus bases de datos.The resource requirement for a pool is determined by the aggregate utilization of its databases. La cantidad de recursos disponibles para el grupo se determina mediante el presupuesto del desarrollador.The amount of resources available to the pool is controlled by the developer budget. El desarrollador simplemente agrega bases de datos al grupo, opcionalmente establece los recursos mínimos y máximos para las bases de datos (DTU mínimas o máximas o núcleos virtuales mínimos y máximos, según la elección del modelo de recursos) y, a continuación, establece los recursos del grupo en función de su presupuesto.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. Un desarrollador puede usar grupos para aumentar de forma eficiente su servicio a partir de un método Lean Startup hasta un negocio con madurez a una escala cada vez mayor.A developer can use pools to seamlessly grow their service from a lean startup to a mature business at ever-increasing scale.

Dentro del grupo, a las bases de datos individuales se les proporciona la flexibilidad de escalarse automáticamente dentro de unos parámetros establecidos.Within the pool, individual databases are given the flexibility to auto-scale within set parameters. Con cargas elevadas, una base de datos puede consumir más recursos para satisfacer la demanda.Under heavy load, a database can consume more resources to meet demand. Las bases de datos con cargas ligeras consumen menos y las bases de datos sin carga no consumen ningún recurso.Databases under light loads consume less, and databases under no load consume no resources. El aprovisionamiento de recursos para el grupo entero en lugar de para bases de datos únicas simplifica las tareas de administración.Provisioning resources for the entire pool rather than for single databases simplifies your management tasks. Además, cuenta con un presupuesto predecible para el grupo.Plus, you have a predictable budget for the pool. Se pueden agregar recursos adicionales a un grupo existente con un tiempo de inactividad mínimo.Additional resources can be added to an existing pool with minimum downtime. De manera similar, si ya no se necesitan recursos adicionales, se pueden quitar de un grupo existente en cualquier momento dado.Similarly, if extra resources are no longer needed they can be removed from an existing pool at any point in time. Puede agregar o quitar las bases de datos del grupo.And you can add or remove databases from the pool. Si una base de datos infrautiliza recursos de forma predecible, sáquela del grupo.If a database is predictably under-utilizing resources, move it out.

Nota

Al mover las bases de datos dentro o fuera de un grupo elástico, no hay tiempo de inactividad, aparte de un breve período de tiempo (del orden de segundos) al final de la operación cuando se descartan las conexiones de base de datos.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.

¿Cuándo se debe usar un grupo elástico de SQL Database?When should you consider a SQL Database elastic pool

Los grupos son apropiados para un amplio número de bases de datos con patrones de utilización específicos.Pools are well suited for a large number of databases with specific utilization patterns. Para una base de datos determinada, este patrón está caracterizado por una utilización media baja con picos de utilización relativamente poco frecuentes.For a given database, this pattern is characterized by low average utilization with relatively infrequent utilization spikes. Por el contrario, no se deben colocar en el mismo grupo elástico varias bases de datos con un uso persistente de medio a alto.Conversely, multiple databases with persistent medium-high utilization should not be placed in the same elastic pool.

Cuantas más bases de datos pueda agregar a un grupo, mayores ahorros habrá.The more databases you can add to a pool the greater your savings become. Según su patrón de uso de la aplicación, es posible ver los ahorros con tan solo dos bases de datos S3.Depending on your application utilization pattern, it's possible to see savings with as few as two S3 databases.

En las secciones siguientes, obtendrá ayuda para evaluar si resulta beneficioso que la colección específica de bases de datos se incluya en un grupo.The following sections help you understand how to assess if your specific collection of databases can benefit from being in a pool. Los ejemplos usan grupos Estándar, pero también se aplican los mismos principios a grupos Básico y Premium.The examples use Standard pools but the same principles also apply to Basic and Premium pools.

Evaluación de los patrones de utilización de base de datosAssessing database utilization patterns

La siguiente ilustración muestra un ejemplo de una base de datos que está mucho tiempo inactiva, pero que también tiene picos periódicos de actividad.The following figure shows an example of a database that spends much time idle, but also periodically spikes with activity. Se trata de un patrón de uso que es apropiado para un grupo:This is a utilization pattern that is suited for a pool:

una base de datos única adecuada para un grupo

El gráfico muestra el uso de DTU durante un período de una hora de 12:00 a 1:00, donde cada punto de datos tiene una granularidad de 1 minuto.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. A las 12:10, DB1 llega a las 90 DTU, pero su uso medio general es inferior a cinco DTU.At 12:10 DB1 peaks up to 90 DTUs, but its overall average usage is less than five DTUs. Se requiere un tamaño de proceso S3 para ejecutar esta carga de trabajo en una base de datos única, pero esto deja a la mayoría de los recursos sin usar durante los períodos de baja actividad.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.

Con un grupo, estas DTU sin usar pueden compartirse entre varias bases de datos, lo que permite reducir el número total de DTU necesarias y el costo general.A pool allows these unused DTUs to be shared across multiple databases, and so reduces the DTUs needed and overall cost.

Según el ejemplo anterior, suponga que existen bases de datos adicionales con patrones de utilización similares como DB1.Building on the previous example, suppose there are additional databases with similar utilization patterns as DB1. En las siguientes dos ilustraciones, la utilización de 4 bases de datos y 20 bases de datos se estratifican en el mismo gráfico para mostrar la naturaleza de no solapamiento de su utilización con el paso del tiempo mediante el modelo de compra basado en 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:

cuatro bases de datos con un patrón de uso adecuado para un grupo

veinte bases de datos con un patrón de uso adecuado para un grupo

En la ilustración anterior, el uso total de DTU en las 20 bases de datos está representado por la línea negra.The aggregate DTU utilization across all 20 databases is illustrated by the black line in the preceding figure. Esto muestra que la utilización de DTU agregada nunca supera las 100 DTU e indica que las 20 bases de datos pueden compartir 100 eDTU en este período.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. El resultado es una reducción en un factor de 20 en las DTU y una reducción del precio 13 veces menor si se compara con la colocación de cada base de datos en los tamaños de proceso S3 para bases de datos únicas.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.

Este ejemplo es ideal por las siguientes razones:This example is ideal for the following reasons:

  • Existen grandes diferencias entre la utilización de picos y la utilización media por base de datos.There are large differences between peak utilization and average utilization per database.
  • La utilización de picos para cada base de dato se produce en puntos de tiempo distintos.The peak utilization for each database occurs at different points in time.
  • Las eDTU se comparten entre varias bases de datos.eDTUs are shared between many databases.

En el modelo de compra basado en DTU, el precio de un grupo es una función de las eDTU del grupo.In the DTU purchasing model, the price of a pool is a function of the pool eDTUs. Aunque el precio unitario de una eDTU para un grupo es 1,5 veces mayor que el de una DTU para una base de datos única, las eDTU de grupo pueden compartirse entre muchas bases de datos, por lo que el número total de eDTU que se necesitan es menor.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. Estas distinciones de precio y uso compartido de la eDTU son la base de la posibilidad de ahorro en el precio que pueden proporcionar los grupos.These distinctions in pricing and eDTU sharing are the basis of the price savings potential that pools can provide.

En el modelo de compra de núcleo virtual, el precio por unidad de núcleo virtual para los grupos elásticos es el mismo que el de la unidad de núcleo virtual para las bases de datos únicas.In the vCore purchasing model, the vCore unit price for elastic pools is the same as the vCore unit price for single databases.

¿Cómo se elige el tamaño de grupo correcto?How do I choose the correct pool size

El mejor tamaño para un grupo depende de los recursos agregados necesarios para todas las bases de datos del grupo.The best size for a pool depends on the aggregate resources needed for all databases in the pool. Esto implica determinar lo siguiente:This involves determining the following:

  • Número máximo de recursos de proceso que todas las bases de datos del grupo utilizan.Maximum compute resources utilized by all databases in the pool. Los recursos de proceso se indexan mediante eDTU o núcleos virtuales, en función del modelo de compra elegido.Compute resources are indexed by either eDTUs or vCores depending on your choice of purchasing model.
  • Número máximo de bytes de almacenamiento utilizado por todas las bases de datos en el grupo.Maximum storage bytes utilized by all databases in the pool.

Para obtener información sobre los niveles de servicio y los límites de recursos de cada modelo de compra, consulte los artículos acerca del modelo de compra basado en DTU o del modelo de compra basado en núcleo virtual.For service tiers and resource limits in each purchasing model, see the DTU-based purchasing model or the vCore-based purchasing model.

Los siguientes pasos pueden ayudarle a calcular si un grupo es más rentable que las bases de datos únicas:The following steps can help you estimate whether a pool is more cost-effective than single databases:

  1. Calcule las eDTU o los núcleos virtuales necesarios para el grupo de la siguiente forma:Estimate the eDTUs or vCores needed for the pool as follows:

Para el modelo de compra basado en DTU:For DTU-based purchasing model:

MAX(<Número total de bases de datos X promedio de uso de DTU por base de datos>, <Número de bases de datos con picos simultáneos X Uso de picos de DTU por base de datos>)MAX(<Total number of DBs X average DTU utilization per DB>, <Number of concurrently peaking DBs X Peak DTU utilization per DB>)

Para el modelo de compra basado en núcleo virtual:For vCore-based purchasing model:

MAX(<Número total de bases de datos X promedio de uso de núcleo virtual por base de datos>, <Número de bases de datos con picos simultáneos X Uso de picos de núcleo virtual por base de datos>)MAX(<Total number of DBs X average vCore utilization per DB>, <Number of concurrently peaking DBs X Peak vCore utilization per DB>)

  1. Calcule el espacio de almacenamiento total necesario para el grupo agregando el tamaño de datos necesarios para todas las bases de datos del grupo.Estimate the total storage space needed for the pool by adding the data size needed for all the databases in the pool. Para el modelo de compra basado en DTU, determine después el tamaño del grupo de eDTU que proporciona esta cantidad de almacenamiento.For the DTU purchasing model, then determine the eDTU pool size that provides this amount of storage.
  2. El modelo de compra basado en DTU toma las estimaciones de eDTU más grandes del paso 1 y el paso 2.For the DTU-based purchasing model, take the larger of the eDTU estimates from Step 1 and Step 2. El modelo de compra basado en núcleo virtual toma la estimación de núcleos virtuales del paso 1.For the vCore-based purchasing model, take the vCore estimate from Step 1.
  3. Consulte la página de precios de SQL Database y busque el tamaño de grupo más pequeño que sea mayor que la estimación del paso 3.See the SQL Database pricing page and find the smallest pool size that is greater than the estimate from Step 3.
  4. Compare el precio del grupo del paso 4 con el precio que supone usar los tamaños de proceso adecuados para bases de datos únicas.Compare the pool price from Step 4 to the price of using the appropriate compute sizes for single databases.

Importante

Si el número de bases de datos de un grupo se aproxima al máximo admitido, asegúrese de consultar Administración de recursos en grupos elásticos densos.If the number of databases in a pool approaches the maximum supported, make sure to consider Resource management in dense elastic pools.

Empleo de otras características de SQL Database con grupos elásticosUsing other SQL Database features with elastic pools

Trabajos elásticos y grupos elásticosElastic jobs and elastic pools

Con un grupo, las tareas de administración se simplifican al ejecutarse los scripts en trabajos elásticos .With a pool, management tasks are simplified by running scripts in elastic jobs. Un trabajo elástico elimina la mayoría de las tediosas tareas asociadas con un gran número de bases de datos.An elastic job eliminates most of tedium associated with large numbers of databases.

Para más información sobre otras herramientas de bases de datos para trabajar con varias bases de datos, consulte Escalado horizontal con Azure SQL Database.For more information about other database tools for working with multiple databases, see Scaling out with Azure SQL Database.

Opciones de continuidad de negocio para bases de datos de un grupo elásticoBusiness continuity options for databases in an elastic pool

Las bases de datos agrupadas suelen ser compatibles con las mismas características de continuidad empresarial que encontrará en las bases de datos únicas.Pooled databases generally support the same business continuity features that are available to single databases.

Creación de un nuevo grupo elástico de SQL Database mediante Azure PortalCreating a new SQL Database elastic pool using the Azure portal

Hay dos maneras de crear un grupo elástico en Azure Portal.There are two ways you can create an elastic pool in the Azure portal.

  1. Vaya a Azure Portal para crear un grupo elástico.Go to the Azure portal to create an elastic pool. Busque y seleccione Azure SQL.Search for and select Azure SQL.

  2. Seleccione + Agregar para abrir la página Select SQL deployment option (Seleccionar la opción de implementación de SQL).Select +Add to open the Select SQL deployment option page. Para ver más información acerca de los grupos elásticos, seleccione Mostrar detalles en el icono Bases de datos.You can view additional information about elastic pools by selecting Show details on the Databases tile.

  3. En el icono Bases de datos, seleccione Grupo elástico en la lista desplegable Tipo de recurso y, después, seleccione Crear:On the Databases tile, select Elastic pool in the Resource type dropdown, then select Create:

    Creación de un grupo elástico

  4. O bien, puede crear un grupo elástico; para ello, vaya a un servidor existente y haga clic en + Nuevo grupo para crear un grupo directamente en ese servidor.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.

Nota

Puede crear varios grupos a un servidor, pero no puede agregar bases de datos de servidores diferentes al mismo grupo.You can create multiple pools on a server, but you can't add databases from different servers into the same pool.

El nivel de servicio del grupo determina las características disponibles para las bases de datos elásticas del grupo y la cantidad máxima de recursos disponibles para cada base de datos.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. Para más información, consulte los límites de recursos para los grupos elásticos en el modelo de DTU.For details, see Resource limits for elastic pools in the DTU model. Para conocer los límites de recursos basados en núcleos virtuales, consulte Límites de recursos basados en núcleos virtuales para grupos elásticos.For vCore-based resource limits for elastic pools, see vCore-based resource limits - elastic pools.

Para configurar los recursos y fijar el precio del grupo, haga clic en Configurar grupo.To configure the resources and pricing of the pool, click Configure pool. A continuación, seleccione un nivel de servicio, agregue las bases de datos al grupo y configure los límites de recursos para el grupo y sus bases de datos.Then select a service tier, add databases to the pool, and configure the resource limits for the pool and its databases.

Después de terminar de configurar el grupo, puede hacer clic en "Aplicar", asignar un nombre al grupo y hacer clic en "Aceptar" para crear el grupo.When you have completed configuring the pool, you can click 'Apply', name the pool, and click 'OK' to create the pool.

Supervisión de un grupo elástico y sus bases de datosMonitor an elastic pool and its databases

En Azure Portal puede supervisar el uso de un grupo elástico y las bases de datos de ese grupo.In the Azure portal, you can monitor the utilization of an elastic pool and the databases within that pool. También puede realizar un conjunto de cambios en el grupo elástico y enviar todos los cambios a la vez.You can also make a set of changes to your elastic pool and submit all changes at the same time. Estos cambios incluyen agregar o quitar bases de datos, cambiar la configuración del grupo elástico o cambiar la configuración de la base de datos.These changes include adding or removing databases, changing your elastic pool settings, or changing your database settings.

Puede utilizar las herramientas integradas de supervisión de rendimiento y de alertas en combinación con las clasificaciones del rendimiento.You can use the built-in performance monitoring and alerting tools, combined with performance ratings. Además, SQL Database puede emitir métricas y registros de recurso para facilitar la supervisión.Additionally, SQL Database can emit metrics and resource logs for easier monitoring.

Casos prácticos de clientesCustomer case studies

  • SnelStartSnelStart

    SnelStart usó grupos elásticos con Azure SQL Database para expandir rápidamente sus servicios de negocio a una velocidad de 1000 bases de datos de Azure SQL nuevas cada mes.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 usa grupos elásticos con Azure SQL Database para aprovisionar y escalar rápidamente servicios para miles de inquilinos en la nube.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 usa grupos elásticos con Azure SQL Database para acelerar su ciclo de desarrollo y mejorar sus servicios al cliente y el rendimiento.Daxko/CSI uses elastic pools with Azure SQL Database to accelerate its development cycle and to enhance its customer services and performance.

Pasos siguientesNext steps