Práticas recomendadas de FinOps para bancos de dados

Este artigo descreve uma coleção de práticas comprovadas de FinOps para serviços de banco de dados. Ele fornece estratégias para otimizar custos, melhorar a eficiência e usar consultas do Azure Resource Graph (ARG) para obter informações sobre seus recursos de banco de dados. Seguindo essas práticas, você pode garantir que seus serviços de banco de dados sejam econômicos e alinhados com os objetivos financeiros da sua organização.


Cosmos DB

As seções a seguir fornecem consultas ARG para o Cosmos DB. Essas consultas ajudam você a obter informações sobre suas contas do Cosmos DB e garantir que elas estejam configuradas com as Unidades de Solicitação (RUs) apropriadas. Ao analisar padrões de uso e destacar recomendações do Assistente do Azure, pode-se otimizar RUs para eficiência de custos.

Consulta: Confirmar unidades de solicitação do Cosmos DB

Esta consulta ARG analisa as contas do Cosmos DB em seu ambiente do Azure para garantir que elas estejam configuradas com as RUs apropriadas.

Descrição

Esta consulta identifica contas do Cosmos DB com recomendações para otimizar suas RUs com base em padrões de uso. Apresenta recomendações do Assistente do Azure para ajustar as RUs visando eficiência de custo.

Categoria

Otimização

Consulta

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

Consulta: coleções do Cosmos DB que beneficiariam ao mudar para outro modo de transferência

Esta consulta ARG identifica coleções do Cosmos DB em seu ambiente do Azure que se beneficiariam da alternância do modo de taxa de transferência, com base nas recomendações do Assistente do Azure.

Descrição

Essa consulta apresenta coleções do Cosmos DB que têm recomendações para alternar seu modo de taxa de transferência (por exemplo, de manual para dimensionamento automático ou vice-versa) para otimizar o desempenho e o custo. Ele usa as recomendações do Assistente do Azure para destacar possíveis melhorias.

Categoria

Otimização

Benefícios

  • Otimização de custos: identifica coleções do Cosmos DB que podem economizar custos mudando para um modo de taxa de transferência mais apropriado com base em padrões de uso e recomendações.
  • Gerenciamento de desempenho: garante que as coleções do Cosmos DB estejam usando o modo de taxa de transferência ideal, melhorando o desempenho e evitando provisionamento excessivo ou insuficiente.

Consulta

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

Consulta: Detalhes do modo de backup do Cosmos DB

Esta consulta ARG analisa contas do Cosmos DB que usam a política de backup 'Periódico' e não têm vários locais de gravação habilitados.

Categoria

Otimização

Consulta

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

Bases de Dados SQL

Base de Dados SQL do Azure é um motor de base de dados totalmente gerido como plataforma como serviço (PaaS) que gere a maioria das funções de gestão de bases de dados, como atualização, patches, backups e monitorização, sem envolvimento do utilizador. Os Elastic Pools permitem-lhe partilhar recursos entre múltiplas bases de dados para otimizar custos.

Recursos relacionados:

Consulta: SQL base de dados ociosa

Essa consulta ARG identifica bancos de dados SQL com nomes que indicam que eles podem ser antigos, em desenvolvimento ou usados para fins de teste.

Categoria

Otimização

Consulta

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

Remover Piscinas Elásticas Não Utilizadas

Recomendação: Remover Pools Elásticos que não têm bases de dados associadas para evitar custos desnecessários.

Sobre piscinas elásticas não utilizadas

SQL Elastic Pools permitem que múltiplas bases de dados partilhem um conjunto comum de recursos. Quando um Elastic Pool não tem bases de dados, ainda incorre em cobranças baseadas nas suas eDTUs ou vCore configuradas. Remover piscinas elásticas vazias elimina estes custos desnecessários.

Note

Os hubs FinOps podem identificar automaticamente Elastic Pools não utilizados. Saiba mais.

Identificar Piscinas Elásticas não utilizadas

Use a seguinte consulta ARG para identificar Elastic Pools sem bases de dados associadas.

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

Enviar comentários

Dê-nos a sua opinião com uma breve avaliação. Usamos essas análises para melhorar e expandir as ferramentas e os recursos do FinOps.

Se você está procurando algo específico, vote em uma ideia existente ou crie uma nova. Partilhe ideias com outras pessoas para obter mais votos. Focamo-nos nas ideias mais votadas.


Recursos relacionados:

Soluções relacionadas: