Mengelola indeks - Database Buku Besar Amazon Quantum (AmazonQLDB)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengelola indeks

penting

Pemberitahuan akhir dukungan: Pelanggan yang ada akan dapat menggunakan Amazon QLDB hingga akhir dukungan pada 07/31/2025. Untuk detail selengkapnya, lihat Memigrasi QLDB Buku Besar Amazon ke Amazon Aurora Postgre. SQL

Bagian ini menjelaskan cara membuat, mendeskripsikan, dan menjatuhkan indeks di AmazonQLDB. Kuota untuk jumlah indeks per tabel yang dapat Anda buat ditentukan dalam. Kuota dan batasan di Amazon QLDB

Membuat indeks

Seperti juga dijelaskan dalamMembuat tabel dan indeks, Anda dapat menggunakan CREATEINDEXpernyataan untuk membuat indeks pada tabel untuk bidang tingkat atas tertentu, sebagai berikut. Nama tabel dan nama bidang yang diindeks keduanya peka huruf besar/kecil.

CREATE INDEX ON VehicleRegistration (VIN)
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)

Setiap indeks yang Anda buat pada tabel memiliki ID unik yang ditetapkan sistem. Untuk menemukan ID indeks ini, lihat bagian berikutMenggambarkan indeks.

penting

QLDBmembutuhkan indeks untuk mencari dokumen secara efisien. Tanpa indeks, QLDB perlu melakukan pemindaian tabel lengkap saat membaca dokumen. Hal ini dapat menyebabkan masalah kinerja pada tabel besar, termasuk konflik konkurensi dan batas waktu transaksi.

Untuk menghindari pemindaian tabel, Anda harus menjalankan pernyataan dengan klausa WHERE predikat menggunakan operator kesetaraan (=atauIN) pada bidang yang diindeks atau ID dokumen. Untuk informasi selengkapnya, lihat Mengoptimalkan kinerja kueri.

Perhatikan kendala berikut saat membuat indeks:

  • Indeks hanya dapat dibuat pada satu bidang tingkat atas. Indeks komposit, bersarang, unik, dan berbasis fungsi tidak didukung.

  • Anda dapat membuat indeks pada setiap tipe data Ion, termasuk list danstruct. Namun, Anda hanya dapat melakukan pencarian yang diindeks berdasarkan kesetaraan seluruh nilai Ion terlepas dari jenis Ion. Misalnya, saat menggunakan list tipe sebagai indeks, Anda tidak dapat melakukan pencarian yang diindeks oleh satu item di dalam daftar.

  • Kinerja kueri ditingkatkan hanya ketika Anda menggunakan predikat kesetaraan; misalnya, WHERE indexedField = 123 atau. WHERE indexedField IN (456, 789)

    QLDBtidak menghormati ketidaksetaraan dalam predikat kueri. Akibatnya, rentang pemindaian yang difilter tidak diterapkan.

  • Nama bidang yang diindeks peka huruf besar/kecil dan dapat memiliki maksimal 128 karakter.

  • Pembuatan indeks di QLDB asinkron. Jumlah waktu yang dibutuhkan untuk menyelesaikan membangun indeks pada tabel yang tidak kosong bervariasi tergantung pada ukuran tabel. Untuk informasi selengkapnya, lihat Mengelola indeks.

Menggambarkan indeks

Pembuatan indeks di QLDB asinkron. Jumlah waktu yang dibutuhkan untuk menyelesaikan membangun indeks pada tabel yang tidak kosong bervariasi tergantung pada ukuran tabel. Untuk memeriksa status build indeks, Anda dapat melakukan kueri tabel katalog sistem information_schema.user_tables.

Misalnya, pernyataan berikut menanyakan katalog sistem untuk semua indeks di atas meja. VehicleRegistration

SELECT VALUE indexes FROM information_schema.user_tables info, info.indexes indexes WHERE info.name = 'VehicleRegistration'
{
    indexId: "Djg2nt0yIs2GY0T29Kud1z",
    expr: "[VIN]",
    status: "ONLINE"
},
{
    indexId: "4tPW3fUhaVhDinRgKRLhGU",
    expr: "[LicensePlateNumber]",
    status: "FAILED",
    message: "aws.ledger.errors.InvalidEntityError: Document contains multiple values for indexed field: LicensePlateNumber"
}
Bidang indeks
  • indexId— ID unik dari indeks.

  • expr— Jalur dokumen yang diindeks. Bidang ini adalah string dalam bentuk:[fieldName].

  • status— Status indeks saat ini. Status indeks dapat menjadi salah satu dari nilai berikut:

    • BUILDING— Secara aktif membangun indeks untuk tabel.

    • FINALIZING— Telah selesai membangun indeks dan mulai mengaktifkannya untuk digunakan.

    • ONLINE— Aktif dan siap digunakan dalam kueri. QLDBtidak menggunakan indeks dalam kueri sampai statusnya online.

    • FAILED— Tidak dapat membangun indeks karena kesalahan yang tidak dapat dipulihkan. Indeks dalam keadaan ini masih dihitung terhadap kuota indeks Anda per tabel. Untuk informasi selengkapnya, lihat Kesalahan umum.

    • DELETING— Secara aktif menghapus indeks setelah pengguna menjatuhkannya.

  • message— Pesan kesalahan yang menjelaskan alasan indeks memiliki FAILED status. Bidang ini hanya disertakan untuk indeks gagal.

Anda juga dapat menggunakan AWS Management Console untuk memeriksa status indeks.

Untuk memeriksa status indeks (konsol)
  1. Masuk ke AWS Management Console, dan buka QLDB konsol Amazon di https://console.aws.amazon.com/qldb.

  2. Di panel navigasi, pilih Buku Besar.

  3. Dalam daftar Buku Besar, pilih nama buku besar yang indeksnya ingin Anda kelola.

  4. Pada halaman detail buku besar, di bawah tab Tabel, pilih nama tabel yang indeksnya ingin Anda periksa.

  5. Pada halaman detail tabel, cari kartu bidang yang diindeks. Kolom status Indeks menampilkan status saat ini dari setiap indeks pada tabel.

Menjatuhkan indeks

Gunakan DROP INDEX pernyataan untuk menjatuhkan indeks. Ketika Anda menjatuhkan indeks, itu dihapus secara permanen dari tabel.

Pertama, cari ID indeks dariinformation_schema.user_tables. Misalnya, query berikut mengembalikan indexId LicensePlateNumber bidang diindeks di atas meja. VehicleRegistration

SELECT indexes.indexId FROM information_schema.user_tables info, info.indexes indexes WHERE info.name = 'VehicleRegistration' and indexes.expr = '[LicensePlateNumber]'

Kemudian, gunakan ID ini untuk menjatuhkan indeks. Berikut ini adalah contoh yang menjatuhkan ID indeks4tPW3fUhaVhDinRgKRLhGU. ID indeks adalah pengidentifikasi unik yang harus dilampirkan dalam tanda kutip ganda.

DROP INDEX "4tPW3fUhaVhDinRgKRLhGU" ON VehicleRegistration WITH (purge = true)
catatan

Klausul WITH (purge = true) ini diperlukan untuk semua DROP INDEX pernyataan, dan saat ini true merupakan satu-satunya nilai yang didukung.

Kata kunci purge adalah case sensitive dan harus semua huruf kecil.

Anda juga dapat menggunakan AWS Management Console untuk menjatuhkan indeks.

Untuk menjatuhkan indeks (konsol)
  1. Masuk ke AWS Management Console, dan buka QLDB konsol Amazon di https://console.aws.amazon.com/qldb.

  2. Di panel navigasi, pilih Buku Besar.

  3. Dalam daftar Buku Besar, pilih nama buku besar yang indeksnya ingin Anda kelola.

  4. Pada halaman detail buku besar, di bawah tab Tabel, pilih nama tabel yang indeksnya ingin Anda jatuhkan.

  5. Pada halaman detail tabel, cari kartu bidang yang diindeks. Pilih indeks yang ingin Anda jatuhkan, lalu pilih Drop index.

Kesalahan umum

Bagian ini menjelaskan kesalahan umum yang mungkin Anda temui saat membuat indeks, dan menyarankan solusi yang mungkin.

catatan

Indeks yang memiliki status FAILED masih dihitung terhadap kuota indeks Anda per tabel. Indeks yang gagal juga mencegah Anda memodifikasi atau menghapus dokumen apa pun yang menyebabkan pembuatan indeks gagal di tabel.

Anda harus secara eksplisit menjatuhkan indeks untuk menghapusnya dari kuota.

Dokumen berisi beberapa nilai untuk bidang yang diindeks: fieldName.

QLDBtidak dapat membangun indeks untuk nama bidang yang ditentukan karena tabel berisi dokumen dengan beberapa nilai untuk bidang yang sama (yaitu, nama bidang duplikat).

Anda harus terlebih dahulu menjatuhkan indeks yang gagal. Kemudian, pastikan bahwa semua dokumen dalam tabel hanya memiliki satu nilai untuk setiap nama bidang sebelum mencoba kembali pembuatan indeks. Anda juga dapat membuat indeks untuk bidang lain yang tidak memiliki duplikat.

QLDBjuga mengembalikan kesalahan ini jika Anda mencoba menyisipkan dokumen yang berisi beberapa nilai untuk bidang yang sudah diindeks di atas meja.

Melebihi batas indeks: Tabel tableName sudah memiliki n indeks, dan tidak dapat membuat lebih banyak.

QLDBmemberlakukan batas lima indeks per tabel, termasuk indeks gagal. Anda harus menjatuhkan indeks yang ada sebelum membuat yang baru.

Tidak ada indeks yang ditentukan dengan pengidentifikasi: indexId.

Anda mencoba untuk menjatuhkan indeks yang tidak ada untuk tabel yang ditentukan dan kombinasi ID indeks. Untuk mempelajari cara memeriksa indeks yang ada, lihatMenggambarkan indeks.