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 Wechsel ihres Throughput-Modus haben, etwa von manuell zu Autoskala oder umgekehrt, mit dem Ziel, 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

Azure SQL-Datenbank ist eine vollständig verwaltete Plattform als Dienst (PaaS)-Datenbankmodul, die die meisten Datenbankverwaltungsfunktionen wie Upgrades, Patching, Sicherungen und Überwachung ohne Benutzereingriff verarbeitet. Mit elastic Pools können Sie Ressourcen zwischen mehreren Datenbanken teilen, um Die Kosten zu optimieren.

Verwandte Ressourcen:

Abfrage: SQL DB im 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

Entfernen nicht verwendeter Elastischer Pools

Empfehlung: Entfernen Sie Elastic Pools ohne zugeordnete Datenbanken, um unnötige Kosten zu vermeiden.

Informationen zu nicht genutzten Elastischen Pools

MIT SQL Elastic Pools können mehrere Datenbanken einen gemeinsamen Ressourcenpool gemeinsam nutzen. Wenn ein Elastic Pool keine Datenbanken hat, entstehen weiterhin Gebühren basierend auf den konfigurierten eDTUs oder vCores. Das Entfernen leerer Elastic Pools beseitigt diese unnötigen Kosten.

Note

FinOps-Hubs können automatisch nicht verwendete Elastic Pools identifizieren. Erfahren Sie mehr.

Identifizieren nicht verwendeter Elastischer Pools

Verwenden Sie die folgende ARG-Abfrage, um Elastic Pools ohne zugeordnete Datenbanken zu identifizieren.

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

Feedback senden

Lassen Sie uns mit einer kurzen Bewertung wissen, wie wir abschneiden. Wir verwenden diese Rezensionen, um FinOps-Tools und -Ressourcen zu verbessern und zu erweitern.

Wenn Sie nach etwas Spezifischem suchen, wählen Sie eine vorhandene Idee aus, oder erstellen Sie eine neue Idee. Teilen Sie Ideen mit anderen, um mehr Stimmen zu erhalten. Wir konzentrieren uns auf Ideen mit den meisten Stimmen.


Verwandte Ressourcen:

Verwandte Lösungen: