Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memahami Indeks Sekunder Global (GSI) menulis pelambatan dan tekanan balik di DynamoDB
Pelambatan tekanan balik GSI mewakili salah satu skenario pelambatan paling kompleks di DynamoDB karena menciptakan hubungan tidak langsung antara operasi tulis dan throttling—aplikasi Anda menulis ke tabel dasar tetapi mengalami pelambatan karena kendala kapasitas pada satu atau beberapa indeks.
Memahami pelambatan tekanan balik GSI
Saat Anda menulis ke tabel DynamoDB, setiap indeks sekunder global (GSI) pada tabel tersebut diperbarui secara asinkron menggunakan model yang akhirnya konsisten. Jika GSI tidak memiliki kapasitas yang cukup untuk menangani pembaruan ini, DynamoDB throttle menulis ke tabel dasar untuk menjaga konsistensi data. Ini disebut tekanan balik GSI. Untuk informasi selengkapnya tentang cara kerja GSI, lihat Indeks Sek under Global di DynamoDB.
Tidak seperti pelambatan tabel langsung di mana sumber daya yang diakses juga merupakan sumber daya yang menyebabkan pelambatan, tekanan balik GSI menciptakan ketergantungan antara tabel dasar dan indeksnya. Bahkan jika tabel dasar Anda memiliki kapasitas yang cukup, penulisan akan dibatasi jika GSI terkait tidak dapat menangani volume pembaruan. Hubungan ini sangat penting untuk dipahami karena batasan tingkat partisi berlaku secara independen untuk tabel dasar dan setiap GSI—masing-masing memiliki struktur partisi sendiri dan batas throughput yang sesuai.
Partisi GSI didasarkan pada kunci partisi GSI, yang seringkali berbeda dari kunci partisi tabel dasar. Bahkan jika akses tabel dasar Anda didistribusikan dengan sempurna di seluruh partisi, pembaruan GSI Anda mungkin masih berkonsentrasi pada partisi tertentu, menciptakan hot spot di GSI. Untuk praktik terbaik umum tentang desain kunci partisi untuk tabel dan GSI, lihat desain kunci partisi DynamoDB.
Misalnya, jika tabel dasar Anda digunakan customerId sebagai kunci partisi (terdistribusi secara merata) tetapi GSI Anda menggunakannya status sebagai kunci partisi (dengan kemungkinan nilai terbatas seperti “aktif”, “tertunda”, “tertutup”), pembaruan item dengan nilai status populer dapat membuat partisi panas GSI bahkan ketika akses tabel dasar seimbang. Ini menciptakan skenario yang sangat menantang di mana aplikasi Anda mungkin mengalami pelambatan karena partisi panas GSI meskipun tabel dasar dan GSI memiliki kapasitas keseluruhan yang cukup dan pola akses tabel dasar tampak terdistribusi dengan baik.
Meskipun pengecualian throttling menunjuk ke GSI (viaResourceArn), operasi aktual yang dibatasi adalah penulisan ke tabel dasar. Ini bisa membingungkan karena aplikasi Anda menulis ke tabel dasar tetapi menerima pengecualian tentang GSI.
Jenis pelambatan GSI
Pelambatan tekanan balik GSI bermanifestasi melalui jenis pengecualian yang berbeda tergantung pada batasan kapasitas tertentu:
-
Kapasitas yang disediakan GSI terlampaui: Terjadi ketika GSI tidak memiliki unit kapasitas tulis yang cukup untuk menangani pembaruan dari operasi tabel dasar. Ini menghasilkan
ProvisionedThroughputExceededExceptionalasan IndexWriteProvisionedThroughputExceeded, dan menunResourceArnjuk langsung ke GSI tertentu yang mengalami kendala kapasitas. -
Throughput maksimum sesuai permintaan GSI terlampaui: Terjadi ketika operasi penulisan GSI melampaui batas maksimum yang dikonfigurasi pada tabel sesuai permintaan. Ini menghasilkan
ThrottlingExceptionalasan IndexWriteMaxOnDemandThroughputExceeded, mengidentifikasi GSI spesifik dengan batasan throughput yang dikonfigurasi. -
Batas partisi GSI terlampaui: Terjadi ketika partisi GSI individu melebihi batas throughput mereka (partisi panas), bahkan jika kapasitas GSI secara keseluruhan tampak cukup. Ini menghasilkan
ThrottlingExceptionalasan IndexWriteKeyRangeThroughputExceeded, menunjukkan masalah partisi panas pada GSI tertentu yang diidentifikasi diResourceArn. Hal ini sangat penting karena distribusi partisi GSI mungkin berbeda secara signifikan dari distribusi partisi tabel dasar, menciptakan titik panas di GSI bahkan ketika akses tabel dasar didistribusikan secara merata. -
Batas akun GSI terlampaui: Pem icu saat operasi penulisan ke GSI tertentu melebihi batas throughput regional per tabel (atau GSI individu dalam tabel tersebut) yang ditetapkan di tingkat akun. DynamoDB mengembalikan a
ThrottlingExceptiondengan alasannya IndexWriteAccountLimitExceeded, menunjuk ke GSI yang mendorong penggunaannya melampaui batas akun. Pelambatan ini terjadi secara independen untuk setiap GSI yang melampaui batas. Untuk informasi tentang kuota per tabel, per akun, regional, layanan, lihat. Kuota di Amazon DynamoDB