全部产品
Search
文档中心

ApsaraDB RDS:Gunakan ekstensi HypoPG untuk membuat indeks hipotetis

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan ekstensi HypoPG untuk membuat indeks hipotetis pada instance ApsaraDB RDS for PostgreSQL. Indeks hipotetis memungkinkan Anda memeriksa apakah indeks dapat meningkatkan kinerja query tanpa mengonsumsi sumber daya seperti core CPU atau ruang disk, karena indeks ini tidak nyata.

Prasyarat

  • Instance RDS Anda harus menjalankan versi mesin minor 20230830 atau lebih baru. Jika instance RDS Anda menggunakan PostgreSQL 17, versi mesin minor harus 20241030 atau lebih baru.

    Penting

    Ekstensi ini didukung di beberapa versi mesin minor sebelum 20230830. Namun, ApsaraDB RDS berencana mengoptimalkan ekstensi rentan dalam pembaruan versi mesin minor guna manajemen ekstensi yang terstandarisasi dan peningkatan keamanan. Oleh karena itu, Anda tidak dapat membuat ekstensi ini pada instance RDS dengan versi mesin minor lebih lama dari 20230830. Untuk informasi lebih lanjut, lihat [Perubahan Produk/Perubahan Fitur] Batasan pembuatan ekstensi untuk instance ApsaraDB RDS for PostgreSQL.

    • Jika Anda telah membuat ekstensi ini pada instance RDS dengan versi mesin minor lebih lama dari 20230830, Anda dapat terus menggunakannya.

    • Jika Anda membuat ekstensi ini untuk pertama kali atau perlu membuat ulang ekstensi untuk instance RDS Anda, Anda harus memperbarui versi mesin minor instance RDS ke versi terbaru. Untuk informasi lebih lanjut, lihat Perbarui versi mesin minor.

  • Gunakan akun istimewa untuk terhubung ke instance RDS Anda. Anda dapat memeriksa jenis akun yang digunakan di halaman Accounts di konsol ApsaraDB RDS. Jika akun tersebut adalah akun standar, buat akun istimewa dan gunakan akun tersebut untuk terhubung ke instance RDS Anda. Untuk informasi lebih lanjut, lihat Buat akun.

Aktifkan atau nonaktifkan ekstensi HypoPG

Catatan

Indeks hipotetis hanya valid dalam sesi saat ini.

  • Eksekusi pernyataan berikut untuk mengaktifkan ekstensi HypoPG:

    CREATE EXTENSION hypopg;
    Catatan

    Hanya akun istimewa yang memiliki izin untuk mengeksekusi pernyataan di atas.

  • Eksekusi pernyataan berikut untuk menonaktifkan ekstensi HypoPG:

    DROP EXTENSION hypopg;
    Catatan

    Hanya akun istimewa yang memiliki izin untuk mengeksekusi pernyataan di atas.

Contoh

  1. Buat tabel dan masukkan data uji ke dalam tabel.

    create extension hypopg;
    
    CREATE TABLE hypo (id integer, val text) ;
    INSERT INTO hypo SELECT i, 'line ' || i FROM generate_series(1, 100000) i ;
    VACUUM ANALYZE hypo ;
  2. Periksa kinerja query dari rencana eksekusi pernyataan SQL ketika tidak ada indeks yang dibuat pada tabel.

    EXPLAIN SELECT val FROM hypo WHERE id = 1;
                           QUERY PLAN
    --------------------------------------------------------
     Seq Scan on hypo  (cost=0.00..1791.00 rows=1 width=14)
       Filter: (id = 1)
    (2 rows)
  3. Buat indeks hipotetis.

    SELECT * FROM hypopg_create_index('CREATE INDEX ON hypo (id)') ;
     indexrelid |      indexname
    ------------+----------------------
          18284 | <18284>btree_hypo_id
    (1 row)
  4. Periksa apakah indeks hipotetis meningkatkan kinerja query dari rencana eksekusi.

    EXPLAIN SELECT val FROM hypo WHERE id = 1;
                                        QUERY PLAN
    ----------------------------------------------------------------------------------
     Index Scan using <18284>btree_hypo_id on hypo  (cost=0.04..8.06 rows=1 width=10)
       Index Cond: (id = 1)
    (2 rows)
  5. Periksa rencana eksekusi dari pernyataan SQL yang dieksekusi. Indeks hipotetis yang Anda buat tidak digunakan dalam rencana eksekusi pernyataan SQL.

    EXPLAIN ANALYZE SELECT val FROM hypo WHERE id = 1;
                                                QUERY PLAN
    ---------------------------------------------------------------------------------------------------
     Seq Scan on hypo  (cost=0.00..1791.00 rows=1 width=10) (actual time=0.046..46.390 rows=1 loops=1)
       Filter: (id = 1)
       Rows Removed by Filter: 99999
     Planning time: 0.160 ms
     Execution time: 46.460 ms
    (5 rows)

Referensi

Untuk informasi lebih lanjut tentang HypoPG, lihat Penggunaan HypoPG.