Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 Cosmos DB-begärans enheter
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 genomströmningsläge (till exempel från manuell till automatisk skalning eller vice versa) för att optimera prestanda och kostnad. 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
Azure SQL Database är en fullständigt hanterad paaS-databasmotor (plattform som en tjänst) som hanterar de flesta databashanteringsfunktioner som uppgradering, korrigering, säkerhetskopiering och övervakning utan användarengagemang. Med elastiska pooler kan du dela resurser mellan flera databaser för att optimera kostnaden.
Relaterade resurser:
- Produktsida för Azure SQL Database
- Priser för Azure SQL Database
- Dokumentation om Azure SQL Database
- Prestandavägledning för SQL Database
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
Ta bort oanvända elastiska pooler
Rekommendation: Ta bort elastiska pooler som inte har några associerade databaser för att undvika onödiga kostnader.
Om oanvända elastiska pooler
Med elastiska SQL-pooler kan flera databaser dela en gemensam resurspool. När en elastisk pool inte har några databaser debiteras den fortfarande baserat på dess konfigurerade eDTU:er eller virtuella kärnor. Om du tar bort tomma elastiska pooler eliminerar du dessa onödiga kostnader.
Note
FinOps-hubbar kan automatiskt identifiera oanvända elastiska pooler. Läs mer.
Identifiera oanvända elastiska pooler
Använd följande ARG-fråga för att identifiera elastiska pooler utan associerade databaser.
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
Lämna feedback
Låt oss veta hur det går med en snabb granskning. Vi använder dessa granskningar för att förbättra och utöka FinOps-verktyg och -resurser.
Om du letar efter något specifikt kan du rösta på en befintlig eller skapa en ny idé. Dela idéer med andra för att få fler röster. Vi fokuserar på idéer med flest röster.
Relaterat innehåll
Relaterade resurser:
Relaterade lösningar: