BERLAKU UNTUK: NoSQL MongoDB Cassandra Gremlin Meja
Azure Cosmos DB menggunakan throughput yang disediakan skala otomatis untuk secara otomatis mengelola dan menskalakan unit permintaan per detik (RU/dtk) database atau kontainer Anda berdasarkan penggunaan. Artikel ini menjawab pertanyaan umum tentang skala otomatis di Azure Cosmos DB.
Throughput yang disediakan skala otomatis atau skala otomatis menskalakan beban kerja berdasarkan wilayah dan partisi yang paling aktif. Sebaliknya, skala otomatis dinamis memungkinkan wilayah dan partisi beban kerja Anda untuk menskalakan secara independen berdasarkan penggunaan. Kami merekomendasikan skala otomatis dinamis kepada semua pelanggan yang berencana menggunakan skala otomatis.
Anda dapat menggunakan templat Resource Manager dengan versi 2023-11-15-preview
API atau versi pratinjau yang lebih baru untuk mengatur properti enablePerRegionPerPartitionAutoscale
ke true. Anda dapat melihat properti ini di tampilan JSON dengan menggunakan pratinjau versi 2023-11-15-preview atau versi pratinjau yang lebih baru.
Anda juga dapat menggunakan Azure CLI atau PowerShell.
// Add Azure Cosmos DB extension 2.0.6-preview for PowerShell
Install-Module -Name Az.CosmosDB -RequiredVersion 2.0.6-preview -AllowPrerelease -AllowClobber -Force
// update the account using this command to enable or disable the property
Update-AzCosmosDBAccount -EnablePerRegionPerPartitionAutoscale $true -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"
// Run this command to see the enablement or disablement status:
Get-AzCosmosDBAccount -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"
Sumber daya yang dibuat dalam model tingkat sebelumnya secara otomatis didukung dalam model RU/dtk maksimum kustom skala otomatis baru. Batas atas tingkat menjadi RU/dtk maksimum yang baru dan menghasilkan kisaran skala yang sama.
Misalnya, jika sebelumnya Anda memilih tingkat yang diskalakan antara 400 RU/dtk dan 4.000 RU/dtk, database atau kontainer sekarang menunjukkan RU/dtk maksimum 4.000 RU/dtk, yang menskalakan antara 400 RU/dtk dan 4.000 RU/dtk. Kemudian, Anda dapat mengubah RU/dtk maksimum menjadi nilai kustom berdasarkan beban kerja Anda.
Mulai April 2022, Anda dapat mengatur skala otomatis dengan RU/dtk maksimum serendah 1.000 RU/dtk (skala antara 100 RU/dtk dan 1.000 RU/dtk). Anda juga dapat mengatur rentang skala 200 RU/dtk ke 2.000 RU/dtk atau 300 RU/dtk ke 3.000 RU/dtk. Sebelumnya, titik masuk adalah 400 RU/dtk menjadi 4.000 RU/dtk.
Kami merekomendasikan konfigurasi ini untuk beban kerja yang memiliki persyaratan throughput rendah, tetapi yang masih mungkin menskalakan ke RU/dtk maksimum.
Dengan skala otomatis, sistem menskalakan throughput (RU/dtk) T
ke atas atau T
ke bawah dalam kisaran 0,1 × Tmax
berdasarkan Tmax
lalu lintas masuk. Karena penskalaannya otomatis dan secara instan, kapan pun Anda dapat menggunakan hingga yang disediakan Tmax
tanpa penundaan.
Gunakan metrik Azure Monitor untuk memantau RU/dtk maksimum skala otomatis yang disediakan dan throughput saat ini (RU/dtk) yang diskalakan sistem.
Setiap jam, Anda ditagih untuk throughput T
tertinggi yang diskalakan sistem dalam waktu satu jam tersebut. Jika sumber daya Anda tidak memiliki permintaan selama satu jam atau tidak menskalakan melebihi 0,1 × Tmax
, Anda akan ditagih minimal 0,1 × Tmax
. Untuk detailnya, lihat halaman harga Azure Cosmos DB.
Dalam akun wilayah tulis tunggal, tingkat skala otomatis per 100 RU/dtk adalah 1,5 kali tingkat throughput standar (manual) yang disediakan. Tagihan Anda menunjukkan pengukur throughput standar yang tersedia. Kuantitas meter ini dikalikan dengan 1,5. Misalnya, jika RU/dtk tertinggi yang diskalakan sistem dalam waktu satu jam adalah 6.000 RU/dtk, Anda ditagih 60 × 1,5 = 90 unit meter untuk jam tersebut.
Dalam akun yang memiliki wilayah multi-tulis, tingkat skala otomatis per 100 RU/dtk sama dengan tarif untuk throughput wilayah multi-tulis standar (manual) yang disediakan. Tagihan Anda menunjukkan pengukur wilayah multi-tulis yang ada. Karena tarifnya sama, jika Anda menggunakan skala otomatis, Anda akan melihat kuantitas yang sama seperti untuk throughput standar.
Ya. Dengan kapasitas yang dipesan untuk akun dengan wilayah tulis tunggal, diskon reservasi untuk sumber daya skala otomatis diterapkan pada penggunaan meter dengan rasio 1,5 kali rasio wilayah tertentu. Misalnya, jika Anda ingin menggunakan kapasitas cadangan untuk mencakup 10.000 RU/dtk penskalaan otomatis, Anda harus berencana untuk membeli 15.000 RU/dtk kapasitas cadangan secara keseluruhan.
Kapasitas pesanan wilayah multitulis berfungsi sama untuk throughput yang tersedia skala otomatis dan standar (manual). Untuk informasi selengkapnya, lihat Kapasitas cadangan Azure Cosmos DB.
Ya. Di tingkat gratis, Anda dapat menggunakan throughput skala otomatis pada database atau pada kontainer. Pelajari selengkapnya tentang cara kerja penagihan tingkat gratis dengan skala otomatis.
Ya. Skala otomatis didukung untuk semua API: NoSQL, Gremlin, Table, Cassandra, dan MongoDB.
Ya. RU/dtk maksimum tersedia di setiap wilayah yang Anda tambahkan ke akun Azure Cosmos DB.
Pelajari cara mengaktifkan skala otomatis.
Ya. Anda juga dapat beralih antara throughput yang disediakan skala otomatis dan standar (manual). Saat ini, untuk semua API, Anda dapat menggunakan portal Azure, Azure CLI, atau PowerShell untuk melakukan operasi ini. Secara desain, Anda tidak dapat menggunakan SDK klien Azure Cosmos DB atau templat Azure Resource Manager untuk bermigrasi antara throughput manual yang disediakan dan skala otomatis. Namun, Anda dapat menggunakan SDK klien atau templat Azure Resource Manager untuk membuat sumber daya skala otomatis baru dan untuk mengubah RU/dtk maksimum pada sumber daya skala otomatis yang ada.
Secara konseptual, mengubah jenis throughput merupakan proses dua tahap. Pertama, Anda mengirim permintaan untuk mengubah setelan throughput untuk menggunakan throughput yang tersedia skala otomatis atau manual. Dalam kedua kasus, sistem secara otomatis menentukan dan menetapkan nilai RU/dtk awal berdasarkan pengaturan throughput dan penyimpanan saat ini. Selama langkah ini, tidak ada nilai RU/dtk yang disediakan pengguna yang diterima. Kemudian, setelah pembaruan selesai, Anda dapat mengubah RU untuk mengakomodasi beban kerja Anda.
Bermigrasi dari throughput standar (manual) yang disediakan ke skala otomatis
Untuk kontainer, gunakan rumus berikut untuk memperkirakan RU/dtk maksimum skala otomatis awal:
MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10)
dibulatkan ke 1.000 RU/dtk terdekat.
RU/dtk maksimum skala otomatis awal yang sebenarnya mungkin bervariasi tergantung pada konfigurasi akun Anda.
Contoh #1: Anda memiliki kontainer yang memiliki throughput yang disediakan manual 10.000 RU/dtk dan penyimpanan 25 GB. Saat Anda mengaktifkan skala otomatis, RU/dtk maksimum skala otomatis awal adalah 10.000 RU/dtk, yang dapat menskalakan antara 1.000 RU/dtk dan 10.000 RU/dtk.
Contoh #2: Anda memiliki kontainer yang memiliki throughput yang disediakan manual 50.000 RU/dtk dan penyimpanan 25.000 GB. Saat Anda mengaktifkan skala otomatis, RU/dtk maksimum skala otomatis awal adalah 250.000 RU/dtk, yang dapat menskalakan antara 25.000 RU/dtk dan 250.000 RU/dtk.
Migrasi dari throughput yang disediakan skala otomatis ke standar (manual)
Throughput manual awal yang disediakan sama dengan RU/dtk maksimum skala otomatis saat ini.
Contoh: Anda memiliki database atau kontainer skala otomatis yang memiliki RU/dtk maksimum 20.000 RU/dtk (skala antara 2.000 RU/dtk dan 20.000 RU/dtk). Ketika Anda memperbarui untuk menggunakan throughput yang disediakan manual, throughput awal adalah 20.000 RU/dtk.
Jika Anda perlu memigrasikan sejumlah besar sumber daya throughput, pertimbangkan untuk menggunakan skrip Azure CLI - Konversi ke Skala Otomatis.
Bisakah saya menggunakan Azure CLI, PowerShell, atau Azure Resource Manager untuk mengelola database atau kontainer yang menggunakan skala otomatis?
Ya. Untuk mengaktifkan skala otomatis secara terprogram pada database atau kontainer yang ada, Anda bisa menggunakan Azure CLI atau PowerShell.
Untuk membuat database atau kontainer baru yang menggunakan skala otomatis, Anda bisa menggunakan templat Azure CLI, PowerShell, atau Azure Resource Manager.
Ya. Untuk mengaktifkan skala otomatis untuk database throughput bersama, saat Anda membuat database, pilih skala otomatis dan opsi Throughput provisi .
Berapa banyak kontainer yang diizinkan per database throughput bersama saat skala otomatis diaktifkan?
Azure Cosmos DB memberlakukan maksimum 25 kontainer dalam database throughput bersama. Maksimum berlaku untuk database yang memiliki throughput skala otomatis atau standar (manual).
Skala otomatis tidak berpengaruh pada tingkat konsistensi database.
Untuk informasi selengkapnya, lihat Tingkat konsistensi.
Batas penyimpanan dalam GB untuk setiap RU/dtk maksimum adalah RU/dtk maksimum database atau kontainer yang dibagi 10. Misalnya, jika RU/dtk maksimum adalah 20.000 RU/dtk, sumber daya dapat mendukung penyimpanan 2.000 GB.
Untuk opsi RU/dtk dan penyimpanan maksimum yang tersedia, lihat Memprovisikan batas skala otomatis throughput.
Jika batas penyimpanan yang terkait dengan throughput maksimum database atau kontainer terlampaui, Azure Cosmos DB secara otomatis meningkatkan throughput maksimum ke RU/dtk tertinggi berikutnya yang dapat mendukung tingkat penyimpanan tersebut.
Misalnya skenario, jika Anda memulai dengan RU/dtk maksimum 50.000 RU/dtk (skala antara 5.000 RU/dtk dan 50.000 RU/dtk), Anda dapat menyimpan hingga 5.000 GB data. Jika ukuran penyimpanan Anda meningkat menjadi 5.001 GB, penyimpanan sekarang 6.000 GB dan RU/dtk maksimum baru adalah 60.000 RU/dtk (skala antara 6.000 RU/dtk dan 60.000 RU/dtk).
Ya. Untuk informasi selengkapnya, lihat Cara memprovisikan throughput skala otomatis.
Saat Anda mengubah RU/dtk maksimum, tergantung pada nilai yang diminta, operasi asinkron mungkin memerlukan waktu 4 hingga 6 jam untuk menyelesaikannya. Pelajari selengkapnya.
Ketika Anda mengirim permintaan untuk meningkatkan RU/dtk Tmax
maksimum, tergantung pada RU/dtk maksimum yang dipilih, layanan menyediakan lebih banyak sumber daya untuk mendukung RU/dtk maksimum yang lebih tinggi. Saat ini terjadi, beban kerja dan operasi Anda yang ada tidak terpengaruh. Sistem terus menskalakan database atau kontainer Anda antara × Tmax
0,1 sebelumnya dan Tmax
hingga rentang skala baru 0,1 × Tmax_new
Tmax_new
siap.
Saat Anda menurunkan RU/dtk maksimum, nilai minimum yang dapat Anda atur ke MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10)
dibulatkan ke 1.000 RU/dtk terdekat.
Contoh #1: Anda memiliki kontainer skala otomatis yang memiliki RU/dtk maksimum 20.000 RU/dtk (skala antara 2.000 RU/dtk dan 20.000 RU/dtk) dan penyimpanan 1.500 GB. Nilai minimum terendah yang dapat Anda atur RU/dtk maksimum adalah MAX(1,000, 20,000 / 10, 1,500 × 10)
= 15.000 RU/dtk (skala antara 1.500 RU/dtk dan 15.000 RU/dtk).
Contoh #2: Anda memiliki kontainer skala otomatis yang memiliki RU/dtk maksimum 100.000 RU/dtk dan penyimpanan 100 GB. Sekarang, Anda menskalakan RU/dtk maksimum hingga 150.000 RU/dtk (skala antara 15.000 RU/dtk dan 150.000 RU/dtk). Nilai minimum terendah yang sekarang dapat Anda atur RU/dtk maksimum adalah MAX(1,000, 150,000 / 10, 100 × 10)
= 15.000 RU/dtk (skala antara 1.500 RU/dtk dan 15.000 RU/dtk).
Untuk database throughput bersama, saat Anda menurunkan RU/dtk maksimum, nilai minimum yang dapat Anda atur ke dibulatkan MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10, 1,000 + (MAX(Container count - 25, 0) × 1,000))
ke 1.000 RU/dtk terdekat.
Rumus dan contoh ini berlaku untuk RU/dtk maksimum skala otomatis minimum yang dapat Anda atur. Mereka terpisah dari × Tmax
0,1 untuk Tmax
rentang yang diskalakan sistem secara otomatis. Terlepas dari RU/dtk maksimum, sistem selalu menskalakan antara 0,1 × Tmax
dan Tmax
.
Operasi Time to Live (TTL) tidak memengaruhi penskalaan RU/dtk dalam skala otomatis. RU apa pun yang digunakan karena TTL bukan bagian dari RU/dtk yang ditagih dari kontainer skala otomatis.
Misalnya, untuk kontainer skala otomatis yang memiliki 400 RU/dtk hingga 4.000 RU/dtk:
- Jam 1: T = 0: Kontainer tidak digunakan (tidak ada TTL atau permintaan beban kerja). RU/dtk yang ditagih adalah 400 RU/dtk.
- Jam 1: T =1: TTL diaktifkan.
- Jam 1: T=2: Kontainer mulai mendapatkan permintaan. Permintaan mengonsumsi 1.000 RU/dtk dalam 1 detik. TTL senilai 200 RU/dtk digunakan. RU/s yang dapat ditagih masih 1.000 RU/dtk. Terlepas dari kapan penghapusan TTL terjadi, hal tersebut tidak memengaruhi logika penskalaan skala otomatis.
Ketika Anda pertama kali memilih RU/dtk maksimum, Azure Cosmos DB menyediakan dengan membandingkan RU/dtk maksimum sebesar 10.000 RU/dtk untuk mendapatkan jumlah partisi fisik yang diperlukan. Setiap partisi fisik dapat mendukung hingga 10.000 RU/dtk dan 50 GB penyimpanan. Saat ukuran penyimpanan meningkat, Azure Cosmos DB secara otomatis membagi partisi untuk menambahkan lebih banyak partisi fisik untuk menangani peningkatan penyimpanan. Jika penyimpanan melebihi batas terkait, Azure Cosmos DB akan meningkatkan RU/dtk maksimum.
RU/dtk maksimum database atau kontainer dibagi secara merata di semua partisi fisik. Total throughput yang dapat diskalakan oleh partisi fisik tunggal adalah RU/dtk maksimum database atau kontainer yang dibagi dengan jumlah partisi fisik.
Jika RU/dtk yang dikonsumsi secara keseluruhan melebihi RU/dtk maksimum database atau kontainer, permintaan yang melebihi RU/dtk maksimum dibatasi dan mengembalikan status kode 429. Permintaan yang menghasilkan lebih dari 100 persen pemanfaatan yang dinormalisasi dibatasi. Pemanfaatan yang dinormalisasi didefinisikan sebagai maksimum pemanfaatan RU/dtk di semua partisi fisik.
Misalnya, throughput maksimum Anda adalah 20.000 RU/dtk dan Anda memiliki dua partisi fisik, P_1 dan P_2. Setiap partisi mampu menskalakan hingga 10.000 RU/dtk. Dalam detik tertentu, jika P_1 menggunakan 6.000 RU dan P_2 menggunakan 8.000 RU, pemanfaatan yang dinormalisasi adalah MAX(6,000 RU / 10,000 RU, 8,000 RU / 10,000 RU)
= 0,8.
Catatan
SDK klien Azure Cosmos DB dan alat impor data (Azure Data Factory, pustaka pelaksana massal) secara otomatis mencoba kembali setelah kesalahan kode 429 dikembalikan, jadi terkadang kesalahan kode 429 tidak bermasalah. Jumlah kesalahan kode 429 yang berkelanjutan mungkin menunjukkan bahwa Anda perlu meningkatkan RU/dtk maksimum atau meninjau strategi partisi Anda untuk menyertakan partisi panas.
Ya. Anda dapat melihat kesalahan kode 429 dalam dua skenario.
Pertama, ketika RU/dtk yang dikonsumsi secara keseluruhan melebihi RU/dtk maksimum database atau kontainer, layanan membatasi permintaan yang sesuai.
Kedua, jika nilai kunci partisi logis memiliki jumlah permintaan yang tidak proporsional lebih tinggi dibandingkan dengan nilai kunci partisi lain, seperti dalam partisi panas, partisi fisik yang mendasar mungkin melebihi anggaran RU/dtk. Sebagai praktik terbaik, untuk menghindari partisi panas, pilih kunci partisi yang baik yang menghasilkan distribusi yang seimbang pada penyimpanan dan throughput.
Misalnya, jika Anda memilih opsi throughput maksimum 20.000 RU/dtk dan Anda memiliki penyimpanan 200 GB, jika Anda memiliki empat partisi fisik, setiap partisi fisik dapat diskalakan secara otomatis hingga 5.000 RU/dtk. Jika partisi panas berada pada kunci partisi logis tertentu, Anda akan melihat kesalahan kode 429 saat partisi fisik yang mendasar tempatnya berada melebihi 5.000 RU/dtk atau 100 persen pemanfaatan yang dinormalisasi.
Melihat kesalahan kode 429 saat Anda menggunakan skala otomatis tidak selalu menunjukkan masalah dengan database atau kontainer Anda. Umumnya untuk beban kerja produksi, jika antara 1 persen dan 5 persen permintaan memiliki kesalahan kode 429 dan latensi end-to-end Anda dapat diterima, kesalahan adalah tanda sehat bahwa RU sedang digunakan sepenuhnya. Tidak diperlukan tindakan.
Pelajari cara menginterpretasikan dan men-debug kode 429 kesalahan pembatasan laju.
Dapatkah konsumsi RU/dtk yang dinormalisasi adalah 100 persen jika skala otomatis tidak menskalakan ke RU/dtk maksimum?
Ya. Untuk informasi selengkapnya, lihat Memantau RU/dtk yang dinormalisasi.
- Mempelajari cara mengaktifkan skala otomatis pada database atau kontainer Azure Cosmos DB.
- Pelajari tentang manfaat throughput yang disediakan dengan menggunakan skala otomatis.
- Mempelajari lebih lanjut tentang partisi logis dan fisik.