Dela via


Metodtips för FinOps för databaser

Den här artikeln beskriver en samling beprövade FinOps-metoder för databastjänster. Den innehåller strategier för att optimera kostnader, förbättra effektiviteten och använda Azure Resource Graph-frågor (ARG) för att få insikter om dina databasresurser. Genom att följa dessa metoder kan du se till att dina databastjänster är kostnadseffektiva och anpassade till organisationens ekonomiska mål.


Cosmos DB

Följande avsnitt innehåller ARG-frågor för Cosmos DB. De här frågorna hjälper dig att få insikter om dina Cosmos DB-konton och se till att de är konfigurerade med lämpliga enheter för programbegäran (RU:er). Genom att analysera användningsmönster och visa rekommendationer från Azure Advisor kan du optimera RU:er för kostnadseffektivitet.

Fråga: Bekräfta Enheter för Cosmos DB-begäran

Den här ARG-frågan analyserar Cosmos DB-konton i din Azure-miljö för att säkerställa att de har konfigurerats med lämpliga RU:er.

Beskrivning

Den här frågan identifierar Cosmos DB-konton med rekommendationer för att optimera sina RU:er baserat på användningsmönster. Den innehåller rekommendationer från Azure Advisor för att justera RU:er för kostnadseffektivitet.

Kategori

Optimering

Fråga

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

Fråga: Cosmos DB-samlingar som skulle ha nytta av att växla till ett annat dataflödesläge

Den här ARG-frågan identifierar Cosmos DB-samlingar i din Azure-miljö som skulle ha nytta av att byta dataflödesläge baserat på Azure Advisor-rekommendationer.

Beskrivning

Den här frågan visar Cosmos DB-samlingar som har rekommendationer för att växla dataflödesläge (till exempel från manuell till autoskalning eller vice versa) för att optimera prestanda och kostnader. Den använder Azure Advisor-rekommendationer för att belysa potentiella förbättringar.

Kategori

Optimering

Fördelar

  • Kostnadsoptimering: Identifierar Cosmos DB-samlingar som kan spara kostnader genom att växla till ett lämpligare dataflödesläge baserat på användningsmönster och rekommendationer.
  • Prestandahantering: Säkerställer att Cosmos DB-samlingar använder det optimala dataflödesläget, förbättrar prestandan och undviker överetablering eller underetablering.

Fråga

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

Fråga: Information om Cosmos DB-säkerhetskopieringsläge

Den här ARG-frågan analyserar Cosmos DB-konton som använder principen för periodisk säkerhetskopiering och som inte har flera skrivplatser aktiverade.

Kategori

Optimering

Fråga

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-databaser

Följande avsnitt innehåller ARG-frågor för SQL-databaser. De här frågorna hjälper dig att identifiera SQL-databaser som kan vara inaktiva, gamla, under utveckling eller används i testsyfte. Genom att analysera dessa databaser kan du optimera kostnaderna och förbättra effektiviteten genom att inaktivera eller återanvända underutnytttagna resurser.

Fråga: SQL DB inaktiv

Den här ARG-frågan identifierar SQL-databaser med namn som anger att de kan vara gamla, under utveckling eller används i testsyfte.

Kategori

Optimering

Fråga

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

Fråga: Analys av oanvända elastiska pooler

Den här ARG-frågan identifierar potentiellt inaktiva elastiska pooler i din Azure SQL-miljö genom att analysera antalet databaser som är associerade med varje elastisk pool.

Kategori

Optimering

Fråga

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

Letar du efter mer?

Missade vi något? Vill du se något tillagt? Vi vill gärna höra om eventuella frågor, problem eller lösningar som du vill se här. Skapa ett nytt problem med den information som du vill se här.


Relaterade resurser:

Relaterade lösningar: