Bagikan melalui


Praktik terbaik FinOps untuk Database

Artikel ini menguraikan kumpulan praktik FinOps yang terbukti untuk layanan database. Ini menyediakan strategi untuk mengoptimalkan biaya, meningkatkan efisiensi, dan menggunakan kueri Azure Resource Graph (ARG) untuk mendapatkan wawasan tentang sumber daya database Anda. Dengan mengikuti praktik ini, Anda dapat memastikan bahwa layanan database Anda hemat biaya dan selaras dengan tujuan keuangan organisasi Anda.


Cosmos DB

Bagian berikut menyediakan kueri ARG untuk Cosmos DB. Kueri ini membantu Anda mendapatkan wawasan tentang akun Cosmos DB Anda dan memastikannya dikonfigurasi dengan Unit Permintaan (RU) yang sesuai. Dengan menganalisis pola penggunaan dan memunculkan rekomendasi dari Azure Advisor, Anda dapat mengoptimalkan RU untuk efisiensi biaya.

Kueri: Konfirmasi unit permintaan untuk Cosmos DB

Kueri ARG ini menganalisis akun Cosmos DB dalam lingkungan Azure Anda untuk memastikan akun tersebut dikonfigurasi dengan RU yang sesuai.

Keterangan

Kueri ini mengidentifikasi akun Cosmos DB dengan rekomendasi untuk mengoptimalkan RU mereka berdasarkan pola penggunaan. Ini memunculkan rekomendasi dari Azure Advisor untuk menyesuaikan RU untuk efisiensi biaya.

Kategori

Pengoptimalan

Pertanyaan

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

Kueri: Koleksi Cosmos DB yang dapat memperoleh manfaat dengan beralih ke mode throughput lain

Kueri ARG ini mengidentifikasi koleksi Cosmos DB dalam lingkungan Azure Anda yang akan mendapat manfaat dari mengalihkan mode throughput mereka, berdasarkan rekomendasi Azure Advisor.

Keterangan

Kueri ini menampilkan koleksi Cosmos DB yang memiliki rekomendasi untuk mengalihkan mode throughput mereka (misalnya, dari manual ke skala otomatis atau sebaliknya) untuk mengoptimalkan performa dan biaya. Ini menggunakan rekomendasi Azure Advisor untuk menyoroti potensi peningkatan.

Kategori

Pengoptimalan

Keuntungan

  • Pengoptimalan biaya: Mengidentifikasi koleksi Cosmos DB yang dapat menghemat biaya dengan beralih ke mode throughput yang lebih tepat berdasarkan pola penggunaan dan rekomendasi.
  • Manajemen kinerja: Memastikan bahwa koleksi Cosmos DB menggunakan mode throughput yang optimal, meningkatkan kinerja, dan menghindari penyediaan yang berlebihan atau kurang.

Pertanyaan

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

Kueri: Detail mode pencadangan Cosmos DB

Kueri ARG ini menganalisis akun Cosmos DB yang menggunakan kebijakan pencadangan 'Berkala' dan tidak mengaktifkan beberapa lokasi tulis.

Kategori

Pengoptimalan

Pertanyaan

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

Bagian berikut ini menyediakan kueri ARG untuk SQL Database. Kueri ini membantu Anda mengidentifikasi database SQL yang mungkin menganggur, lama, dalam pengembangan, atau digunakan untuk tujuan pengujian. Dengan menganalisis database ini, Anda dapat mengoptimalkan biaya dan meningkatkan efisiensi dengan menonaktifkan atau menggunakan kembali sumber daya yang kurang digunakan.

Kueri: SQL DB menganggur

Kueri ARG ini mengidentifikasi database SQL dengan nama yang menunjukkan bahwa database tersebut mungkin sudah tua, dalam pengembangan, atau digunakan untuk tujuan pengujian.

Kategori

Pengoptimalan

Pertanyaan

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

Kueri: Analisis Kumpulan Elastis yang Tidak Digunakan

Kueri ARG ini mengidentifikasi Kumpulan Elastis yang berpotensi menganggur di lingkungan Azure SQL Anda dengan menganalisis jumlah database yang terkait dengan setiap Kumpulan Elastis.

Kategori

Pengoptimalan

Pertanyaan

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

Berikan umpan balik

Beri tahu kami bagaimana kinerja kami melalui ulasan singkat. Kami menggunakan ulasan ini untuk meningkatkan dan memperluas alat dan sumber daya FinOps.

Jika Anda mencari sesuatu yang spesifik, pilih yang sudah ada atau buat ide baru. Bagikan ide dengan orang lain untuk mendapatkan lebih banyak suara. Kami fokus pada ide-ide dengan suara terbanyak.


Sumber daya terkait:

Solusi terkait: