データベースの FinOps のベスト プラクティス
この記事では、データベース サービスに関する実績のある FinOps プラクティスのコレクションについて説明します。 コストを最適化し、効率を向上させ、Azure Resource Graph (ARG) クエリを使用してデータベース リソースに関する分析情報を得るための戦略を提供します。 これらのプラクティスに従うことで、データベース サービスがコスト効率が高く、組織の財務目標に沿っていることを確認できます。
Cosmos DB
以降のセクションでは、Cosmos DB の ARG クエリについて説明します。 これらのクエリは、Cosmos DB アカウントに関する分析情報を得て、それらが適切な要求ユニット (RU) で構成されていることを確認するのに役立ちます。 使用パターンを分析し、Azure Advisor からの推奨事項を確認することで、RU を最適化してコスト効率を高めることができます。
クエリ: Cosmos DB 要求ユニットを確認する
この ARG クエリは、Azure 環境内の Cosmos DB アカウントを分析して、それらが適切な RU で構成されていることを確認します。
説明
このクエリでは、使用パターンに基づいて RU を最適化するための推奨事項を含む Cosmos DB アカウントを識別します。 コスト効率を高めるために RU を調整するための Azure Advisor からの推奨事項が示されています。
カテゴリ
最適化
クエリ
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 Advisor の推奨事項に基づいて、スループット モードを切り替えることでメリットを得られる Azure 環境内の 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 Database
次のセクションでは、SQL Database の ARG クエリについて説明します。 これらのクエリは、アイドル状態、古い、開発中、またはテスト目的で使用される可能性のある SQL データベースを識別するのに役立ちます。 これらのデータベースを分析することで、使用率の低いリソースを使用停止または再利用することで、コストを最適化し、効率を向上させることができます。
クエリ: SQL DB アイドル状態
この ARG クエリは、SQL データベースが古い、開発中、またはテスト目的で使用される可能性があることを示す名前を持つ 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
その他をお探しですか?
何か見逃したの? 何か追加された内容を確認しますか? ここで取り上げたい質問、問題、または解決策についてお聞きください。 ここに含める詳細を含む新しい問題を作成 します。
関連するコンテンツ
関連情報を次に示します。
関連するソリューション: