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.
Contenu connexe
Ressources connexes :
Solutions connexes :