Partager via


Meilleures pratiques finOps pour les bases de données

Cet article décrit une collection de pratiques FinOps éprouvées pour les services de base de données. Il fournit des stratégies pour optimiser les coûts, améliorer l’efficacité et utiliser des requêtes Azure Resource Graph (ARG) pour obtenir des insights sur vos ressources de base de données. En suivant ces pratiques, vous pouvez vous assurer que vos services de base de données sont rentables et alignés sur les objectifs financiers de votre organisation.


Cosmos DB (base de données)

Les sections suivantes fournissent des requêtes ARG pour Cosmos DB. Ces requêtes vous aident à obtenir des insights sur vos comptes Cosmos DB et à s’assurer qu’ils sont configurés avec les unités de requête appropriées. En analysant les modèles d’utilisation et en exposant des recommandations d’Azure Advisor, vous pouvez optimiser les RUs pour améliorer l’efficacité des coûts.

Requête : Confirmer les unités de requête Cosmos DB

Cette requête ARG analyse les comptes Cosmos DB au sein de votre environnement Azure pour s’assurer qu’ils sont configurés avec les Request Units (unités de requêtes) appropriées.

Description

Cette requête identifie les comptes Cosmos DB avec des recommandations pour optimiser leurs RUs selon les habitudes d'utilisation. Il présente les recommandations d’Azure Advisor pour ajuster les unités de requête (RU) afin d'optimiser le coût.

Catégorie

Optimisation

Requête

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

Requête : collections Cosmos DB qui bénéficieraient d’un basculement vers un autre mode de débit

Cette requête ARG identifie les collections Cosmos DB au sein de votre environnement Azure qui bénéficieraient du basculement de leur mode de débit, en fonction des recommandations d’Azure Advisor.

Description

Cette requête fait apparaître les collections Cosmos DB qui ont des recommandations pour changer de mode de débit (par exemple, du mode manuel au mode de mise à l’échelle automatique ou inversement) pour optimiser les performances et les coûts. Il utilise des recommandations Azure Advisor pour mettre en évidence les améliorations potentielles.

Catégorie

Optimisation

Avantages sociaux

  • Optimisation des coûts : identifie les collections Cosmos DB qui peuvent économiser des coûts en passant à un mode de débit plus approprié en fonction des modèles d’utilisation et des recommandations.
  • Gestion des performances : garantit que les collections Cosmos DB utilisent le mode de débit optimal, améliorent les performances et évitent le surapprovisionnement ou le sous-approvisionnement.

Requête

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

Requête : Détails du mode de sauvegarde Cosmos DB

Cette requête ARG analyse les comptes Cosmos DB qui utilisent la stratégie de sauvegarde « Périodique » et n’ont pas plusieurs emplacements d’écriture activés.

Catégorie

Optimisation

Requête

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 données SQL

Les sections suivantes fournissent des requêtes ARG pour les bases de données SQL. Ces requêtes vous aident à identifier les bases de données SQL qui peuvent être inactives, anciennes, en cours de développement ou utilisées à des fins de test. En analysant ces bases de données, vous pouvez optimiser les coûts et améliorer l’efficacité en désaffectant ou en réaffectant des ressources sous-utilisées.

Requête : base de données SQL inactive

Cette requête ARG identifie les bases de données SQL avec des noms indiquant qu’elles peuvent être anciennes, en cours de développement ou utilisées à des fins de test.

Catégorie

Optimisation

Requête

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

Requête : Analyse des pools élastiques inutilisés

Cette requête ARG identifie les pools élastiques potentiellement inactifs dans votre environnement Azure SQL en analysant le nombre de bases de données associées à chaque pool élastique.

Catégorie

Optimisation

Requête

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

Envoyer des commentaires

Faites-nous savoir ce que vous pensez de notre travail avec un petit avis. Nous utilisons ces révisions pour améliorer et développer les outils et ressources FinOps.

Si vous recherchez quelque chose de spécifique, votez pour une idée existante ou créez une nouvelle idée. Partagez des idées avec d’autres personnes pour obtenir plus de votes. Nous nous concentrons sur les idées avec le plus de votes.


Ressources connexes :

Solutions connexes :