Поделиться через


Рекомендации по FinOps для баз данных

В этой статье описывается коллекция проверенных методик FinOps для служб баз данных. Он предоставляет стратегии оптимизации затрат, повышения эффективности и использования запросов Azure Resource Graph (ARG) для получения аналитических сведений о ресурсах базы данных. Следуя этим методикам, вы можете убедиться, что службы баз данных являются экономически эффективными и соответствуют финансовым целям вашей организации.


Cosmos DB

В следующих разделах приведены запросы ARG для Cosmos DB. Эти запросы помогают получить аналитические сведения о учетных записях Cosmos DB и убедиться, что они настроены с соответствующими единицами запросов (ЕЗ). Анализируя шаблоны использования и рекомендации по поиску из Помощника по Azure, вы можете оптимизировать ЕЗ для повышения эффективности затрат.

Запрос. Подтверждение единиц запросов Cosmos DB

Этот запрос ARG анализирует учетные записи Cosmos DB в среде Azure, чтобы убедиться, что они настроены с соответствующими ЕЗ.

Description

Этот запрос определяет учетные записи Cosmos DB с рекомендациями по оптимизации ЕЗ на основе шаблонов использования. Он предоставляет рекомендации помощника по Azure для настройки единиц запросов на экономичность.

Категория

Optimization

Запрос

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 определяет коллекции Cosmos DB в вашей среде Azure, которые могут воспользоваться переключением режима пропускной способности на основе рекомендаций Помощника по Azure.

Description

Этот запрос предоставляет коллекции Cosmos DB, которые имеют рекомендации по переключении режима пропускной способности (например, вручную на автомасштабирование или наоборот) для оптимизации производительности и затрат. В нем используются рекомендации Помощника по Azure для выделения потенциальных улучшений.

Категория

Optimization

Льготы

  • Оптимизация затрат: определяет коллекции 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, использующие политику периодического резервного копирования и не включающую несколько расположений записи.

Категория

Optimization

Запрос

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

В следующих разделах приведены запросы ARG для База данных SQL. Эти запросы помогают определить базы данных SQL, которые могут быть бездействующими, старыми, в разработке или используемыми для тестирования. Анализируя эти базы данных, вы можете оптимизировать затраты и повысить эффективность путем вывода из эксплуатации или повторного использования неиспользуемых ресурсов.

Запрос: простой базы данных SQL

Этот запрос ARG определяет базы данных SQL с именами, указывающими, что они могут быть старыми, в разработке или используются для тестирования.

Категория

Optimization

Запрос

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 определяет потенциально неактивные эластичные пулы в среде SQL Azure, анализируя количество баз данных, связанных с каждым эластичным пулом.

Категория

Optimization

Запрос

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

Ищете больше?

Упустили ли мы что-нибудь? Хотите ли вы увидеть что-то добавленное? Мы хотели бы услышать о любых проблемах, проблемах или решениях, которые вы хотели бы увидеть здесь. Создайте новую проблему с подробными сведениями, которые вы хотите просмотреть здесь.


Связанные ресурсы:

Связанные решения: