共用方式為


資料庫的 FinOps 最佳做法

本文概述資料庫服務經證實的 FinOps 做法集合。 它提供將成本優化、提高效率,以及使用 Azure Resource Graph (ARG) 查詢以深入瞭解資料庫資源的策略。 遵循這些做法,您可以確保資料庫服務符合成本效益,並符合您組織的財務目標。


Cosmos DB

下列各節提供 Cosmos DB 的 ARG 查詢。 這些查詢可協助您深入瞭解 Cosmos DB 帳戶,並確保它們已設定適當的要求單位 (RU)。 藉由分析 Azure Advisor 的使用模式和呈現建議,您可以將 RU 優化以達到成本效益。

查詢:確認 Cosmos DB 要求單位

此 ARG 查詢會分析 Azure 環境中的 Cosmos DB 帳戶,以確保其已使用適當的 RU 進行設定。

說明

此查詢會識別 Cosmos DB 帳戶,並建議根據使用模式優化其 RU。 其會顯示來自 Azure Advisor 的建議,以調整 RU 以符合成本效益。

類別

最佳化

查詢

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

查詢:可受益於切換到另一個輸送量模式的 Cosmos DB 集合

此 ARG 查詢會識別 Azure 環境中可受益於根據 Azure Advisor 建議切換輸送量模式的 Cosmos DB 集合。

說明

此查詢會呈現 Cosmos DB 集合,這些集合具有切換其輸送量模式的建議(例如,從手動切換至自動調整,反之亦然),以優化效能和成本。 它會使用 Azure Advisor 建議來醒目提示潛在的改善。

類別

最佳化

福利

  • 成本優化: 根據使用模式和建議切換至更適當的輸送量模式,識別可節省成本的 Cosmos DB 集合。
  • 效能管理: 確保 Cosmos DB 集合使用最佳輸送量模式、增強效能並避免過度布建或布建不足。

查詢

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

查詢:Cosmos DB 備份模式詳細數據

此 ARG 查詢會分析使用「定期」備份原則且未啟用多個寫入位置的 Cosmos DB 帳戶。

類別

最佳化

查詢

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 Databases

下列各節提供 SQL 資料庫 的ARG查詢。 這些查詢可協助您識別可能閑置、舊版、開發中或用於測試用途的 SQL 資料庫。 藉由分析這些資料庫,您可以將成本優化,並藉由解除委任或重新使用使用量過低的資源來提升效率。

查詢:SQL DB 閑置

此 ARG 查詢會使用名稱來識別 SQL 資料庫,指出它們可能是舊資料庫、開發中或用於測試用途。

類別

最佳化

查詢

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

查詢:未使用的彈性集區分析

此 ARG 查詢會分析與每個彈性集區相關聯的資料庫數目,以識別 Azure SQL 環境中可能閒置的彈性集區。

類別

最佳化

查詢

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

正在尋找其他專案嗎?

我們錯過了什麼嗎? 您要看到新增的內容嗎? 我們很想聽聽任何您想要在這裡看到的問題、問題或解決方案。 使用您想要在這裡看到的詳細數據,建立新的問題


相關資源:

相關解決方案: