PolarDB for PostgreSQL mendukung penulisan massal pernyataan untuk membuat atau menyegarkan tampilan material.
Prasyarat
Fitur ini didukung pada kluster PolarDB for PostgreSQL yang menjalankan mesin berikut:
PostgreSQL 14 (versi revisi 2.0.14.9.15.0 hingga versi revisi 2.0.14.13.27.0).
PostgreSQL 11 (versi revisi 2.0.11.15.37.0 atau lebih baru).
Anda dapat memeriksa versi revisi kluster Anda di konsol PolarDB atau dengan menjalankan pernyataan
SHOW polardb_version;.Jika versi revisi tidak memenuhi persyaratan, gunakan solusi berikut untuk mesin basis data yang berbeda:
Untuk PostgreSQL 11, tingkatkan versi revisi.
Untuk PostgreSQL 14 atau yang lebih baru, jika PostgreSQL 14 versi revisi 2.0.14.13.28.0 atau lebih baru diterapkan, gunakan fitur infrastruktur impor massal.
Informasi latar belakang
Tampilan material adalah objek basis data yang berisi hasil kueri. Berbeda dengan tampilan normal, tampilan material menyimpan definisi tampilan dan salinan data saat dibuat. Untuk informasi lebih lanjut, lihat CREATE MATERIALIZED VIEW. Jika data dalam tampilan material tidak konsisten dengan definisi tampilan, Anda dapat menyegarkan tampilan material untuk menjaga konsistensi data. Untuk informasi lebih lanjut, lihat REFRESH MATERIALIZED VIEW. Tampilan material pada dasarnya menghitung terlebih dahulu kueri dalam definisi tampilan sehingga dapat digunakan kembali selama kueri.
Pernyataan CREATE TABLE AS mendefinisikan tabel baru dari hasil kueri. Tabel tersebut memiliki struktur yang sama dengan kolom keluaran kueri.
Pernyataan SELECT INTO membuat tabel baru dan mengisinya dengan data yang dihitung oleh kueri. Data tersebut tidak dikembalikan ke klien. Tabel baru memiliki struktur yang sama persis dengan kolom keluaran kueri.
Cara kerjanya
Kernel PostgreSQL menggunakan set logika kode yang sama untuk menangani pernyataan untuk membuat tampilan material (CREATE MATERIALIZED VIEW) dan menyegarkan tampilan material (REFRESH MATERIALIZED VIEW) serta pernyataan CREATE TABLE AS dan SELECT INTO, karena pernyataan-pernyataan ini melakukan langkah-langkah serupa di tingkat basis data. Langkah-langkah berikut biasanya termasuk:
Pemindaian data: Jalankan kueri yang ditentukan dalam definisi tampilan atau dalam pernyataan
CREATE TABLE ASatauSELECT INTOuntuk memindai data yang memenuhi kondisi.Penulisan data: Tulis data yang dipindai pada langkah sebelumnya ke tampilan material baru atau tabel baru.
Untuk mengoptimalkan langkah penulisan data, PolarDB for PostgreSQL memperkenalkan penulisan massal. Saat sejumlah besar data akan ditulis, sejumlah tupel tertentu yang terakumulasi di memori ditulis ke tabel atau tampilan material sekaligus. Ini mengurangi overhead untuk mencatat log WAL dan frekuensi penguncian halaman, serta secara signifikan mempersingkat waktu eksekusi DDL.
Penggunaan
Atur parameter polar_enable_create_table_as_bulk_insert ke ON untuk mengaktifkan fitur ini. Nilai defaultnya adalah ON.
SET polar_enable_create_table_as_bulk_insert TO ON;