Pemula5 menit baca

DynamoDB Ukuran Tabel dan Jumlah Item

Tidak ada SELECT COUNT(*) yang bisa Anda tunjuk dengan murah ke tabel DynamoDB. DynamoDB memberi Anda dua jawaban yang sangat berbeda untuk "seberapa besar tabel ini?": a perkiraan gratis yang bisa memakan waktu hingga enam jam, dan hitungan pastinya yang memerlukan pembacaan tabel secara menyeluruh. Kebanyakan "kenapa hitungan item saya salah?" kebingungan adalah memilih satu sambil mengharapkan perilaku yang lain.

Bagaimana cara mendapatkan jumlah item dan ukuran tabel DynamoDB?

Hubungi DescribeTable: ini mengembalikan ItemCount dan TableSizeBytes gratis, tapi "DynamoDB memperbarui nilai ini kira-kira setiap enam jam. Perubahan terkini mungkin tidak tercermin dalam nilai ini" (Referensi AWS API). Untuk angka tepat, jalankan Scan dengan --select COUNT — ini hanya mengembalikan menghitung, tetapi membaca (dan menagih) setiap item. GUI seperti DynoTable menunjukkan perkiraan pada setiap tabel dan dapat menghitung jumlah pasti berdasarkan permintaan.

Anda inginGunakanBiayaKesegaran
Jumlah rata-rata + ukuran, gratisDescribeTabletidak ada (panggilan metadata)~6 jam basi
Jumlah total yang tepatScan dengan Select COUNTmembaca seluruh tabelhidup
Hitungan tepat untuk satu kunciQuery dengan Select COUNTmembaca item yang cocokhidup
Jumlah subset yang difilterScan/Query + filter + JUMLAHmembaca semuanya scanhidup

Metode 1: DescriptionTable (gratis, ~6 jam basi)

DescribeTable adalah pencarian metadata — tidak membaca item apa pun, sehingga tidak menggunakan apa pun kapasitas baca, dan itu membawa dua nomor yang Anda cari:

aws dynamodb describe-table --table-name Orders \
  --query 'Table.[ItemCount, TableSizeBytes]'

Keduanya datang dengan peringatan yang sama, kata demi kata dari Referensi API: "DynamoDB memperbarui nilai ini kira-kira setiap enam jam. Perubahan terkini mungkin tidak tercermin dalam nilai ini." Jadi tabel yang baru saja Anda muat secara massal bisa laporkan ItemCount: 0 selama berjam-jam — nomornya tidak salah, ini cuplikan.

Respons yang sama juga membawa angka per indeks: setiap GSI dan LSI melaporkan ItemCount dan IndexSizeBytes miliknya sendiri dengan irama enam jam yang sama. Membandingkan jumlah item dengan tabel adalah a pemeriksaan kesehatan gratis yang bagus — ini memberi tahu Anda berapa banyak item yang benar-benar membawa indeks kunci.

Metode 2: penghitungan persis dengan Pindai + Pilih JUMLAH

Ketika "kira-kira, mulai pagi ini" tidak cukup baik, hitunglah dengan sungguh-sungguh:

aws dynamodb scan --table-name Orders --select COUNT

Fakta yang perlu diketahui sebelum Anda menjalankannya, semuanya dari Pindai referensi API:

  • COUNT "mengembalikan jumlah item yang cocok, bukan yang cocok item itu sendiri" — lebih sedikit lalu lintas jaringan, tetapi "ini menggunakan hal yang sama kuantitas unit kapasitas baca sebagai mendapatkan item". Hitungan pasti dari a Tabel 100 GB adalah pembacaan 100 GB pada tagihan Anda.
  • Satu permintaan masih berhenti pada 1 MB data yang dipindai; tanggapannya Count "hanya mengembalikan jumlah item khusus untuk satu pemindaian permintaan". CLI mengikuti LastEvaluatedKey dan menjumlahkan halaman untuk Anda; di Kode SDK yang Anda ulangi dan tambahkan — lihat pagination.
  • Di atas tabel besar, pisahkan pekerjaan dengan a pemindaian paralel (--segment / --total-segments) dan jumlahkan jumlah per segmen.

Menghitung subset

  • Item dalam satu kunci partisi: Query dengan --select COUNT — berbunyi hanya item kuncinya saja, jadi murah karena datanya kecil. Ini adalah cara yang benar untuk menghitung .
  • Item yang cocok dengan filter: tambahkan FilterExpression — tapi ingat jumlah yang ditagihkan kepada Anda adalah ScannedCount, bukan Count: filter DynamoDB setelah membaca, jadi "hitung pesanan yang diarsipkan" melalui pemindaian yang difilter akan membuahkan hasil setiap pesanan. ScannedCount tinggi di samping Count kecil adalah ciri khasnya dari filter yang ingin menjadi GSI — lihat strategi pemfilteran.

Untuk pertanyaan yang lebih kaya — jumlah per status, jumlah, rata-rata — DynamoDB tidak memilikinya GROUP BY sama sekali; solusinya ada hitungan, jumlah & agregat. (Atau lewati solusi: Workbench SQL DynoTable berjalan GROUP BY dan mengagregasi sisi klien.)

Ukuran tabel dan jumlah item di DynoTable

DynoTable menempatkan kedua jawaban di tempat yang Anda cari. Setiap tabel terbuka memiliki tombol Pengaturan di bilah alat tab; dialog yang dibukanya menunjukkan:

  • Kunci utama dan indeks sekunder — sekilas bentuk tabel.
  • Item · Ukuran · Rata-rata item — perkiraan DescribeTable milik DynamoDB sendiri, diberi label sebagai perkiraan, dengan peringatan enam jam akan berlalu.
  • Tabel indeks — di bagian Pengindeksan, pemindaian pengambilan sampel sekali klik yang mencatat atributnya ditemukan (termasuk jalur bersarang seperti commonData.status), dengan kemajuan langsung. Pemindaian dibatasi, sehingga atribut langka mungkin hilang; batasnya aktif Ikhtisar tabel dan pengindeksan. Ini memberi kekuatan pada bidang pelengkapan otomatis dan kesimpulan Ekspor Skema TypeScript / Zod / JSON, dan dikenakan biaya baca DynamoDB normal — aplikasi menyatakan demikian di muka.
Panel Statistik tabel di DynoTable: kunci dan indeks, baris Perkiraan Item / Ukuran / Rata-rata item, dan daftar bidang yang diindeks.
Panel Statistik tabel di DynoTable: kunci dan indeks, baris Perkiraan Item / Ukuran / Rata-rata item, dan daftar bidang yang diindeks.

Dan untuk angka pastinya, agen AI bawaan menghitung jumlah, jumlah, dan pengelompokan per grup pada keseluruhan tabel di permintaan — ia membaca setiap item yang cocok daripada mengambil sampel halaman, dan itu bertanya sebelum menjalankan apa pun yang memerlukan kapasitas baca.

FAQ

Mengapa penghitungan item DynamoDB saya salah? ItemCount (dan TableSizeBytes) menyegarkan "kira-kira setiap enam jam", jadi penulisan dan penghapusan terbaru belum tercermin. Ikhtisar tabel konsol menunjukkan angka DescribeTable yang sama, dengan lag yang sama.

Bagaimana tepatnya cara menghitung baris di DynamoDB? aws dynamodb scan --table-name X --select COUNT — halaman CLI melalui seluruh tabel dan menjumlahkan jumlah per halaman. Itu persis tetapi tagihannya sama kapasitas untuk mengambil setiap item.

Apakah DescriptionTable gratis? Itu tidak menghabiskan kapasitas baca — jadi ini adalah panggilan metadata, bukan pembacaan data polling itu tidak akan menyentuh throughput tabel Anda.Bagaimana cara mengetahui ukuran satu item? DynamoDB meter berdasarkan ukuran item (dibulatkan ke atas per 1 KB tulisan / 4 KB baca). Tempelkan item ke dalam kalkulator ukuran item untuk melihat tagihannya ukuran, dan lihat batas item 400 KB untuk langit-langit.

Apakah jumlah item mempengaruhi tagihan saya? Penyimpanan ditagih berdasarkan TableSizeBytes, dan permintaan berdasarkan ukuran item × permintaan hitungan — bukan berdasarkan jumlah item secara langsung. Masukkan nomor tabel Anda ke dalam kalkulator harga untuk melihat bulanan gambaran di seluruh mode sesuai permintaan dan yang disediakan.

Ingin bentuk tabel, perkiraan, dan bidang yang diindeks hanya dengan sekali klik? Unduh DynoTable dan buka panel Statistik di tabel mana pun.

Diperbarui