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

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 unités de requête pour optimiser 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 unités de requête appropriées.

Description

Cette requête identifie les comptes Cosmos DB avec des recommandations pour optimiser leurs unités de requête en fonction des modèles d’utilisation. Il expose les recommandations d’Azure Advisor pour ajuster les unités de requête pour 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 expose les collections Cosmos DB qui ont des recommandations pour basculer leur mode de débit (par exemple, du manuel à la 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

Vous cherchez plus ?

Avons-nous manqué quoi que ce soit ? Voulez-vous voir quelque chose ajouté ? Nous aimerions en savoir plus sur toutes les questions, problèmes ou solutions que vous souhaitez voir ici. Créez un problème avec les détails que vous souhaitez voir ici.


Ressources connexes :

Solutions connexes :