Sdílet prostřednictvím


Osvědčené postupy FinOps pro databáze

Tento článek popisuje kolekci osvědčených postupů FinOps pro databázové služby. Poskytuje strategie pro optimalizaci nákladů, zlepšení efektivity a použití dotazů Azure Resource Graphu (ARG) k získání přehledu o vašich databázových prostředcích. Podle těchto postupů můžete zajistit, aby vaše databázové služby byly nákladově efektivní a v souladu s finančními cíli vaší organizace.


Cosmos DB

Následující části obsahují dotazy ARG pro Službu Cosmos DB. Tyto dotazy vám pomůžou získat přehled o účtech Cosmos DB a zajistit, aby byly nakonfigurované s příslušnými jednotkami žádostí (RU). Díky analýze vzorů využití a zpřístupnění doporučení z Azure Advisoru můžete optimalizovat jednotky RU pro nákladovou efektivitu.

Dotaz: Potvrzení jednotek žádostí Cosmos DB

Tento dotaz ARG analyzuje účty Cosmos DB ve vašem prostředí Azure, aby se zajistilo, že jsou nakonfigurované s příslušnými RU.

Popis

Tento dotaz identifikuje účty Cosmos DB s doporučeními pro optimalizaci jejich RU na základě vzorů využití. Nabízí doporučení od Azure Advisoru k úpravě RU pro nákladovou efektivitu.

Kategorie

Optimalizace

Dotaz

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

Dotaz: Kolekce Cosmos DB, pro které by bylo výhodné přepnout do jiného režimu propustnosti

Tento dotaz ARG identifikuje kolekce Cosmos DB ve vašem prostředí Azure, které by mohly těžit z přepnutí režimu propustnosti na základě doporučení Azure Advisoru.

Popis

Tento dotaz zobrazí kolekce Cosmos DB s doporučeními k přepnutí jejich režimu propustnosti (například z ručního škálování na automatické škálování nebo naopak) za účelem optimalizace výkonu a nákladů. Využívá doporučení Azure Advisoru ke zvýraznění potenciálních vylepšení.

Kategorie

Optimalizace

Benefity

  • Optimalizace nákladů: Identifikuje kolekce Cosmos DB, které můžou ušetřit náklady přepnutím do vhodnějšího režimu propustnosti na základě vzorů využití a doporučení.
  • Správa výkonu: Zajišťuje, aby kolekce Cosmos DB používaly optimální režim propustnosti, zvýšily výkon a zabránily nadměrnému zřizování nebo nedostatečnému zřizování.

Dotaz

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

Dotaz: Podrobnosti o režimu zálohování služby Cosmos DB

Tento dotaz ARG analyzuje účty Cosmos DB, které používají zásady pravidelného zálohování a nemají povolené více umístění zápisu.

Kategorie

Optimalizace

Dotaz

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

Databáze SQL

Následující části obsahují dotazy ARG pro databáze SQL. Tyto dotazy vám pomůžou identifikovat databáze SQL, které můžou být nečinné, staré, ve vývoji nebo používané pro účely testování. Analýzou těchto databází můžete optimalizovat náklady a zvýšit efektivitu vyřazením z provozu nebo opětovným použitím nevyužitých prostředků.

Dotaz: Nečinná databáze SQL

Tento dotaz ARG identifikuje databáze SQL s názvy, které můžou být staré, ve vývoji nebo používané pro účely testování.

Kategorie

Optimalizace

Dotaz

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

Dotaz: Analýza nepoužívaných elastických fondů

Tento dotaz ARG identifikuje potenciálně nečinné elastické fondy ve vašem prostředí Azure SQL analýzou počtu databází přidružených k jednotlivým elastickým fondům.

Kategorie

Optimalizace

Dotaz

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

Hledáte další?

Chyběli jsme něco? Chcete vidět něco přidaného? Rádi bychom se dozvěděli o jakýchkoli otázkách, problémech nebo řešeních, které byste zde rádi probrali. Vytvořte nový problém s podrobnostmi, které byste chtěli vidět v obou těchto tématech.


Související zdroje:

Související řešení: