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 recomendações do Azure Advisor, você pode 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. Ele apresenta recomendações do Azure Advisor para ajustar as RUs para eficiência de custos.
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 se beneficiariam da mudança para outro modo de taxa 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 Azure Advisor.
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 Azure Advisor 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
As seções a seguir fornecem consultas ARG para bancos de dados SQL. Essas consultas ajudam a identificar bancos de dados SQL que podem estar ociosos, antigos, em desenvolvimento ou usados para fins de teste. Ao analisar esses bancos de dados, você pode otimizar custos e melhorar a eficiência descomissionando ou reorientando recursos subutilizados.
Consulta: SQL DB ocioso
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
Consulta: Análise de pools elásticos não utilizados
Esta consulta ARG identifica Pools Elásticos potencialmente ociosos em seu ambiente SQL do Azure analisando o número de bancos de dados associados a cada Pool Elástico.
Categoria
Otimização
Consulta
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
Procura mais?
Perdemos alguma coisa? Gostaria de ver algo acrescentado? Adoraríamos saber mais sobre quaisquer perguntas, problemas ou soluções que você gostaria de ver abordadas aqui. Crie um novo problema com os detalhes que você gostaria de ver incluídos aqui.
Conteúdos relacionados
Recursos relacionados:
Soluções relacionadas:
- Relatórios do Power BI do kit de ferramentas FinOps
- Hubs FinOps
- Pastas de trabalho FinOps
- Motor de otimização