Freigeben über


Bewährte Methoden für FinOps für Datenbanken

In diesem Artikel wird eine Sammlung bewährter FinOps-Praktiken für Datenbankdienste beschrieben. Es bietet Strategien zum Optimieren von Kosten, zur Verbesserung der Effizienz und zur Verwendung von Azure Resource Graph (ARG)-Abfragen, um Einblicke in Ihre Datenbankressourcen zu erhalten. Anhand dieser Methoden können Sie sicherstellen, dass Ihre Datenbankdienste kosteneffizient sind und den finanziellen Zielen Ihrer Organisation entsprechen.


Cosmos DB

In den folgenden Abschnitten werden ARG-Abfragen für Cosmos DB bereitgestellt. Diese Abfragen helfen Ihnen, Einblicke in Ihre Cosmos DB-Konten zu gewinnen und sicherzustellen, dass sie mit den entsprechenden Anforderungseinheiten (RUs) konfiguriert sind. Indem Sie Nutzungsmuster und Empfehlungen von Azure Advisor analysieren, können Sie RUs für die Kosteneffizienz optimieren.

Abfrage: Bestätigen von Cosmos DB-Anforderungseinheiten

Diese ARG-Abfrage analysiert Cosmos DB-Konten in Ihrer Azure-Umgebung, um sicherzustellen, dass sie mit den entsprechenden RUs konfiguriert sind.

Beschreibung

Diese Abfrage identifiziert Cosmos DB-Konten mit Empfehlungen zur Optimierung ihrer RUs basierend auf Verwendungsmustern. Es enthält Empfehlungen von Azure Advisor, um RUs für die Kosteneffizienz anzupassen.

Kategorie

Optimierung

Abfrage

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

Abfrage: Cosmos DB-Auflistungen, die von einem Wechsel zu einem anderen Durchsatzmodus profitieren würden

Diese ARG-Abfrage identifiziert Cosmos DB-Sammlungen in Ihrer Azure-Umgebung, die davon profitieren würden, ihren Durchsatzmodus basierend auf Azure Advisor-Empfehlungen zu wechseln.

Beschreibung

Diese Abfrage zeigt Cosmos DB-Auflistungen an, die Empfehlungen zum Wechseln des Durchsatzmodus haben (z. B. manuell in Autoskalen oder umgekehrt), um Leistung und Kosten zu optimieren. Es verwendet Azure Advisor-Empfehlungen, um potenzielle Verbesserungen hervorzuheben.

Kategorie

Optimierung

Vorteile

  • Kostenoptimierung: Identifiziert Cosmos DB-Sammlungen, die Kosten sparen können, indem sie basierend auf Nutzungsmustern und Empfehlungen zu einem geeigneteren Durchsatzmodus wechseln.
  • Leistungsverwaltung: Stellt sicher, dass Cosmos DB-Sammlungen den optimalen Durchsatzmodus verwenden, die Leistung verbessern und eine Überbereitstellung oder Unterbereitstellung vermeiden.

Abfrage

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

Abfrage: Details des Cosmos DB-Sicherungsmodus

Diese ARG-Abfrage analysiert Cosmos DB-Konten, die die Sicherungsrichtlinie "Periodisch" verwenden und nicht mehrere Schreibspeicherorte aktiviert haben.

Kategorie

Optimierung

Abfrage

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

SQL-Datenbanken

In den folgenden Abschnitten werden ARG-Abfragen für SQL-Datenbank s bereitgestellt. Diese Abfragen helfen Ihnen, SQL-Datenbanken zu identifizieren, die im Leerlauf, alt, in der Entwicklung oder zu Testzwecken verwendet werden können. Durch die Analyse dieser Datenbanken können Sie Kosten optimieren und die Effizienz verbessern, indem Sie nicht genutzte Ressourcen außer Betrieb setzen oder wiederverwenden.

Abfrage: SQL DB-Leerlauf

Diese ARG-Abfrage identifiziert SQL-Datenbanken mit Namen, die angeben, dass sie möglicherweise alt, in der Entwicklung oder zu Testzwecken verwendet werden.

Kategorie

Optimierung

Abfrage

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

Abfrage: Nicht verwendete Elastic Pools-Analyse

Diese ARG-Abfrage identifiziert potenziell im Leerlauf befindliche Elastic Pools in Ihrer Azure SQL-Umgebung, indem die Anzahl der Datenbanken analysiert wird, die jedem Elastic Pool zugeordnet sind.

Kategorie

Optimierung

Abfrage

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

Suchen Sie mehr?

Haben wir etwas verpasst? Möchten Sie etwas hinzufügen? Wir freuen uns, uns über Fragen, Probleme oder Lösungen zu informieren, die Hier behandelt werden sollen. Erstellen Sie ein neues Problem mit den Details, die Sie hier sehen möchten.


Verwandte Ressourcen:

Verwandte Lösungen: