Compartir a través de


Procedimientos recomendados de FinOps para bases de datos

En este artículo se describe una colección de prácticas probadas de FinOps para los servicios de base de datos. Proporciona estrategias para optimizar los costos, mejorar la eficacia y usar consultas de Azure Resource Graph (ARG) para obtener información sobre los recursos de la base de datos. Al seguir estos procedimientos, puede asegurarse de que los servicios de base de datos son rentables y se alinean con los objetivos financieros de su organización.


Cosmos DB

En las secciones siguientes se proporcionan consultas ARG para Cosmos DB. Estas consultas le ayudan a obtener información sobre las cuentas de Cosmos DB y a asegurarse de que están configuradas con las unidades de solicitud (RU) adecuadas. Mediante el análisis de patrones de uso y recomendaciones de superficie de Azure Advisor, puede optimizar las RU para la rentabilidad.

Consulta: Confirmación de unidades de solicitud de Cosmos DB

Esta consulta de ARG analiza las cuentas de Cosmos DB dentro del entorno de Azure para asegurarse de que están configuradas con las RU adecuadas.

Descripción

Esta consulta identifica las cuentas de Cosmos DB con recomendaciones para optimizar sus RU en función de los patrones de uso. Muestra recomendaciones de Azure Advisor para ajustar las RU para la eficiencia de los costos.

Categoría

Optimization

Consultar

advisorresources
| where type =~ 'microsoft.advisor/recommendations'
| where properties.impactedField == 'microsoft.documentdb/databaseaccounts'
    and properties.recommendationTypeId == '8b993855-1b3f-4392-8860-6ed4f5afd8a7'
| order by id asc
| project 
    id, subscriptionId, resourceGroup,
    CosmosDBAccountName = properties.extendedProperties.GlobalDatabaseAccountName,
    DatabaseName = properties.extendedProperties.DatabaseName,
    CollectionName = properties.extendedProperties.CollectionName,
    EstimatedAnnualSavings = bin(toreal(properties.extendedProperties.annualSavingsAmount), 1),
    SavingsCurrency = properties.extendedProperties.savingsCurrency

Consulta: colecciones de Cosmos DB que se beneficiarían de cambiar a otro modo de rendimiento

Esta consulta de ARG identifica las colecciones de Cosmos DB dentro del entorno de Azure que se beneficiarían de cambiar el modo de rendimiento, en función de las recomendaciones de Azure Advisor.

Descripción

Esta consulta expone colecciones de Cosmos DB que tienen recomendaciones para cambiar su modo de rendimiento (por ejemplo, desde el escalado manual al automático o viceversa) para optimizar el rendimiento y el costo. Usa recomendaciones de Azure Advisor para resaltar posibles mejoras.

Categoría

Optimization

Ventajas

  • Optimización de costos: identifica colecciones de Cosmos DB que pueden ahorrar costos cambiando a un modo de rendimiento más adecuado en función de los patrones de uso y las recomendaciones.
  • Administración del rendimiento: garantiza que las colecciones de Cosmos DB usan el modo de rendimiento óptimo, lo que mejora el rendimiento y evita el aprovisionamiento excesivo o el aprovisionamiento insuficiente.

Consultar

advisorresources
| where type =~ 'microsoft.advisor/recommendations'
| where properties.impactedField == 'microsoft.documentdb/databaseaccounts'
    and properties.recommendationTypeId in (
        ' cdf51428-a41b-4735-ba23-39f3b7cde20c',
        ' 6aa7a0df-192f-4dfa-bd61-f43db4843e7d'
    )
| order by id asc
| project 
    id, subscriptionId, resourceGroup,
    CosmosDBAccountName = properties.extendedProperties.GlobalDatabaseAccountName,
    DatabaseName = properties.extendedProperties.DatabaseName,
    CollectionName = properties.extendedProperties.CollectionName,
    EstimatedAnnualSavings = bin(toreal(properties.extendedProperties.annualSavingsAmount), 1),
    SavingsCurrency = properties.extendedProperties.savingsCurrency

Consulta: detalles del modo de copia de seguridad de Cosmos DB

Esta consulta de ARG analiza las cuentas de Cosmos DB que usan la directiva de copia de seguridad "Periódica" y no tienen habilitadas varias ubicaciones de escritura.

Categoría

Optimization

Consultar

resources
| where type == "microsoft.documentdb/databaseaccounts"
| where resourceGroup in ({ResourceGroup})
| where properties.backupPolicy.type == 'Periodic'
    and tobool(properties.enableMultipleWriteLocations) == false
| extend BackupCopies = toreal(properties.backupPolicy.periodicModeProperties.backupRetentionIntervalInHours)
    / (toreal(properties.backupPolicy.periodicModeProperties.backupIntervalInMinutes) / real(60))
| where BackupCopies >= 10
    or (BackupCopies > 2
        and toint(properties.backupPolicy.periodicModeProperties.backupRetentionIntervalInHours) <= 168)
| order by id asc
| project id, CosmosDBAccountName=name, resourceGroup, subscriptionId, BackupCopies

Bases de datos SQL Database

En las secciones siguientes se proporcionan consultas ARG para bases de datos SQL. Estas consultas le ayudan a identificar las bases de datos SQL que pueden estar inactivas, antiguas, en desarrollo o que se usan con fines de prueba. Mediante el análisis de estas bases de datos, puede optimizar los costos y mejorar la eficacia mediante la retirada o la reutilización de recursos infrautilizados.

Consulta: SQL DB inactiva

Esta consulta de ARG identifica las bases de datos SQL con nombres que indican que pueden ser antiguas, en desarrollo o que se usan con fines de prueba.

Categoría

Optimization

Consultar

resources
| where type == "microsoft.sql/servers/databases"
| where name contains "old" or name contains "Dev"or  name contains "test"
| where resourceGroup in ({ResourceGroup})
| extend SQLDBName = name, Type = sku.name, Tier = sku.tier, Location = location
| order by id asc
| project id, SQLDBName, Type, Tier, resourceGroup, Location, subscriptionId

Consulta: análisis de grupos elásticos sin usar

Esta consulta de ARG identifica grupos elásticos potencialmente inactivos en el entorno de Azure SQL mediante el análisis del número de bases de datos asociadas a cada grupo elástico.

Categoría

Optimization

Consultar

resources
| where type == "microsoft.sql/servers/elasticpools"
| extend elasticPoolId = tolower(tostring(id))
| extend elasticPoolName = name
| extend elasticPoolRG = resourceGroup
| extend skuName = tostring(sku.name)
| extend skuTier = tostring(sku.tier)
| extend skuCapacity = tostring(sku.capacity)
| join kind=leftouter (
    resources
    | where type == "microsoft.sql/servers/databases"
    | extend elasticPoolId = tolower(tostring(properties.elasticPoolId))
) on elasticPoolId
| summarize databaseCount = countif(isnotempty(elasticPoolId1)) by 
    elasticPoolId,
    elasticPoolName,
    serverResourceGroup = resourceGroup,
    name,
    skuName,
    skuTier,
    skuCapacity,
    elasticPoolRG
| where databaseCount == 0
| project elasticPoolId,
    elasticPoolName,
    databaseCount,
    elasticPoolRG,
    skuName,
    skuTier,
    skuCapacity

¿Buscas más?

¿Perdimos algo? ¿Desea ver algo agregado? Nos encantaría conocer las preguntas, problemas o soluciones que le gustaría ver aquí. Cree un nuevo problema con los detalles que le gustaría ver aquí.


Recursos relacionados

Soluciones relacionadas: