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.
PentingEkstensi 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
Indeks hipotetis hanya valid dalam sesi saat ini.
Eksekusi pernyataan berikut untuk mengaktifkan ekstensi HypoPG:
CREATE EXTENSION hypopg;CatatanHanya akun istimewa yang memiliki izin untuk mengeksekusi pernyataan di atas.
Eksekusi pernyataan berikut untuk menonaktifkan ekstensi HypoPG:
DROP EXTENSION hypopg;CatatanHanya akun istimewa yang memiliki izin untuk mengeksekusi pernyataan di atas.
Contoh
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 ;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)Buat indeks hipotetis.
SELECT * FROM hypopg_create_index('CREATE INDEX ON hypo (id)') ; indexrelid | indexname ------------+---------------------- 18284 | <18284>btree_hypo_id (1 row)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)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.