Ekstensi rds_duckdb untuk ApsaraDB RDS for PostgreSQL mempercepat kueri analitik kompleks. Dengan menyediakan tabel berorientasi kolom dan vektorisasi, ekstensi ini secara signifikan meningkatkan performa kueri tanpa memerlukan perubahan pada pernyataan SQL asli Anda.
Untuk pertanyaan, diskusi, atau masukan mengenai ekstensi ini, bergabunglah dengan grup DingTalk Ekstensi ApsaraDB RDS for PostgreSQL (ID: 103525002795).
Ikhtisar
Ekstensi rds_duckdb mengintegrasikan DuckDB yang efisien dan hemat sumber daya ke dalam ApsaraDB RDS for PostgreSQL guna meningkatkan kemampuan kueri analitiknya. Ekstensi ini memungkinkan Anda mengekspor tabel lokal ke dalam tabel berorientasi kolom dan mengaktifkan akselerasi kueri AP.
Prasyarat
Instans ApsaraDB RDS for PostgreSQL Anda menjalankan versi utama PostgreSQL 13 atau lebih baru.
Instans Anda menjalankan versi mesin minor 20260130 atau lebih baru.
Anda telah menambahkan rds_duckdb ke dalam running value parameter shared_preload_libraries.
Untuk informasi selengkapnya tentang cara mengonfigurasi parameter, lihat Setel parameter instans. Sebagai contoh, Anda dapat mengubah running value menjadi
'pg_stat_statements,auto_explain,rds_duckdb'.
Untuk versi mesin minor 20250228 dan yang lebih baru, sinkronisasi data inkremental otomatis untuk tabel berorientasi kolom diaktifkan secara default.
Buat dan hapus ekstensi
Gunakan Akun istimewa untuk membuat atau menghapus ekstensi.
Buat ekstensi
CREATE EXTENSION rds_duckdb;Periksa versi DuckDB
SELECT rds_duckdb.duckdb_version();Hapus ekstensi
DROP EXTENSION rds_duckdb;Kelola tabel berorientasi kolom
Buat tabel berorientasi kolom
Jalankan perintah berikut untuk mengekspor tabel lokal dari instans ApsaraDB RDS for PostgreSQL Anda ke dalam tabel berorientasi kolom. Tabel lokal dapat mencakup tabel pengguna, tampilan yang di-materialisasi, atau tabel eksternal.
Jika instans Anda menjalankan PostgreSQL 15 dengan versi mesin minor 20250228 atau lebih baru, sinkronisasi inkremental otomatis untuk tabel berorientasi kolom diaktifkan secara default. Sebelum membuat tabel berorientasi kolom, konfigurasikan instans ApsaraDB RDS for PostgreSQL target dan tabel lokal untuk fitur ini. Untuk informasi selengkapnya, lihat Konfigurasikan sinkronisasi inkremental otomatis untuk tabel berorientasi kolom.
SELECT rds_duckdb.create_duckdb_table('local_table_name');Refresh tabel berorientasi kolom
Jalankan perintah berikut untuk merefresh tabel berorientasi kolom yang diekspor dengan data terbaru dari tabel lokal sumber. Perintah ini memperbarui skema tabel maupun datanya.
SELECT rds_duckdb.refresh_duckdb_table('local_table_name');Periksa ukuran tabel
SELECT rds_duckdb.duckdb_table_size('local_table_name');Periksa ukuran total tabel yang diekspor
SELECT rds_duckdb.duckdb_database_size();Hapus tabel berorientasi kolom
SELECT rds_duckdb.drop_duckdb_table('local_table_name');Kelola akselerasi AP
Ekstensi rds_duckdb saat ini hanya mempercepat kueri read-only. Ketika akselerasi kueri AP diaktifkan, setiap kueri yang hanya menggunakan tabel yang memiliki padanan tabel berorientasi kolom DuckDB akan dialihkan ke DuckDB. Jika suatu kueri melibatkan operasi yang tidak didukung, seperti DML atau DDL, atau merujuk ke tabel yang tidak memiliki padanan berorientasi kolom, kueri tersebut secara otomatis kembali menggunakan mesin standar ApsaraDB RDS for PostgreSQL.
Untuk kueri yang kembali menggunakan mesin PostgreSQL, sistem mengembalikan peringatan dalam format berikut: WARNING: Trying to execute an operation with non-duckdb tables(test), fallback to PG. Tabel yang tercantum dalam tanda kurung adalah tabel yang tidak memiliki padanan tabel berorientasi kolom DuckDB.
Kueri non-read-only juga memicu peringatan: WARNING: Modification operations on DuckDB tables are currently not supported, fallback to PG.
Aktifkan akselerasi AP
SET rds_duckdb.execution = on;Konfigurasikan parameter akselerasi AP
Sesuaikan parameter dalam sesi Anda untuk mengontrol performa akselerasi kueri AP. Contohnya:
SET rds_duckdb.worker_threads = 32;
SET rds_duckdb.memory_limit = 16384;Parameter | Deskripsi | Saran |
rds_duckdb.worker_threads | Jumlah thread pekerja untuk akselerasi kueri AP. Nilai valid: 1 hingga 255. Nilai default: 1. |
|
rds_duckdb.memory_limit | Batas memori untuk akselerasi kueri AP. Unit: MB. Jangan sertakan unit saat mengatur nilai parameter. Nilai valid: 1 hingga INT32_MAX. Nilai default: 100 (yang berarti 100 MB). |
|
Untuk informasi selengkapnya tentang parameter DuckDB, lihat dokumentasi resmi DuckDB.
Nonaktifkan akselerasi AP
SET rds_duckdb.execution = off;Konfigurasikan auto-sync untuk tabel berorientasi kolom
Jika instans Anda menjalankan PostgreSQL 15 dengan versi mesin minor 20250228 atau lebih baru, sinkronisasi inkremental otomatis untuk tabel berorientasi kolom diaktifkan secara default. Sebelum membuat tabel berorientasi kolom, lengkapi langkah-langkah berikut.
Di manajemen ekstensi, periksa versi
rds_duckdbdan upgrade ke versi 1.3 atau lebih baru.Setel parameter instans untuk mengubah running value parameter wal_level menjadi logical.
(Opsional) Jika tabel lokal target tidak memiliki primary key, jalankan perintah berikut untuk menetapkan indeks REPLICA IDENTITY sebagai kunci replikasi.
ALTER TABLE <local_table_name> REPLICA IDENTITY USING INDEX <index_name>;Gunakan akun dengan izin replikasi atau Akun istimewa untuk membuat tabel berorientasi kolom.
Periksa status dan progres sinkronisasi tabel berorientasi kolom
SELECT * FROM rds_duckdb.duckdb_sync_stat;Lihat rencana eksekusi SQL
Gunakan pernyataan EXPLAIN untuk membandingkan rencana eksekusi kueri SQL dengan dan tanpa akselerasi kueri AP yang diaktifkan. Contohnya:
Contoh berikut menunjukkan rencana eksekusi ketika akselerasi kueri AP diaktifkan.
Contoh berikut menunjukkan rencana eksekusi ketika akselerasi kueri AP dinonaktifkan.
Pengujian performa
Untuk mengevaluasi peningkatan performa yang diberikan oleh rds_duckdb pada kueri kompleks, rujuk pada pengujian benchmark TPC-H standar kami yang dilakukan di lingkungan Linux. Untuk prosedur dan hasil lengkap, lihat Pengujian performa untuk ekstensi rds_duckdb.