PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0, dibandingkan dengan Versi 1.0, menampilkan arsitektur kompatibilitas yang sepenuhnya baru, dengan kompatibilitas sintaksis Oracle sebagai dasar pengembangannya. Versi 2.0 mencapai peningkatan performa signifikan dalam beban kerja konkurensi tinggi, beban tulis tinggi, kueri paralel, dan replikasi logis di bawah kondisi beban terdistribusi. Topik ini menjelaskan secara rinci perbedaan spesifik antara kedua versi untuk referensi Anda. Silakan merujuk pada versi PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 yang dirilis saat ini (20250630). Beberapa fitur akan didukung secara bertahap di versi berikutnya.
Peningkatan performa yang signifikan
Uji performa untuk skenario hanya-baca (select-only) dan skenario baca-tulis (tpcb-like) dilakukan menggunakan pgbench pada kluster spesifikasi polar.o.x8.xlarge. Hasil uji adalah sebagai berikut:
Skenario | PolarDB for PostgreSQL (Kompatibel dengan Oracle) 1.0 | PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 | Peningkatan performa |
Skema hanya-baca (select-only) | 109.141,30 | 120.803,95 | 10,69% |
Skema baca-tulis (tpcb-like) | 49.226,71 | 64.752,41 | 31,54% |
PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 menunjukkan peningkatan performa signifikan dibandingkan Versi 1.0, terutama dalam skenario baca-tulis tpcb-like di mana performa meningkat lebih dari 30%. Selain itu, dalam skenario dengan banyak koneksi, PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memiliki peningkatan throughput transaksi hingga 100% dalam skenario uji.
Untuk lebih meningkatkan performa, Versi 2.0 menambahkan banyak fitur kueri paralel. Misalnya, RETURN QUERY dalam fungsi PL/pgSQL sekarang mendukung komputasi paralel saat mengembalikan hasil, dan perintah REFRESH MATERIALIZED VIEW juga dapat menggunakan kueri paralel. Selain itu, pemindaian urutan paralel chunk didukung, meningkatkan throughput I/O untuk pemindaian data berskala besar, mendekati batas throughput I/O perangkat blok.
Peningkatan indeks
PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 mengoptimalkan penanganan data duplikat dalam indeks B-tree (indeks database standar), mengurangi penggunaan ruang keseluruhan indeks B-tree sambil meningkatkan performa kueri keseluruhan. Secara khusus, memperkenalkan kebijakan kompresi indeks teknologi deduplikasi untuk secara otomatis mendeduplikasi dan menekan data duplikat dalam indeks B-tree dan mengurangi ruang yang ditempati oleh indeks. Pada saat yang sama, Versi 2.0 juga menangani masalah konsumsi sumber daya dengan indeks B-tree, termasuk masalah pembengkakan tabel yang disebabkan oleh pembaruan indeks yang sering.
Selain itu, versi ini menyediakan indeks GiST yang melakukan pra-pengurutan data selama proses pembuatan, secara signifikan meningkatkan kecepatan pembuatan indeks GiST dan SP-GiST serta mengurangi ukuran indeks.
Peningkatan tabel partisi
PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 telah meningkatkan sistem partisi, menghasilkan performa yang lebih baik saat menanyakan tabel partisi. Sekarang, Anda dapat menggunakan pemangkasan partisi yang lebih fleksibel dan operasi JOIN cerdas. Selain itu, versi ini telah meningkatkan dukungan untuk pemicu dan menambahkan dukungan untuk replikasi logis, membuat replikasi dan sinkronisasi data lebih efisien dan andal.
Selain itu, Versi 2.0 mengoptimalkan kemampuan pemangkasan partisi, mengurangi SubPlans partisi anak dan rencana cache yang duplikat, memungkinkan eksekusi kueri yang lebih cepat. Pada saat yang sama, ketika menambahkan atau menghapus partisi, menggunakan mode alter table detach|attach PARTITION concurrently menghindari konflik kunci, meningkatkan ketersediaan dan stabilitas database.
VACUUM Paralel (pengumpulan sampah)
Mekanisme VACUUM sangat penting dalam manajemen database di PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0, karena dapat melepaskan ruang tabel yang tidak lagi digunakan untuk meringankan masalah pembengkakan tabel umum. Untuk lebih mengoptimalkan efisiensi dan performa pengumpulan sampah, Versi 2.0 memperkenalkan mekanisme pemulihan indeks paralel. Selain itu, Anda dapat menentukan jumlah pekerja paralel untuk lebih memenuhi kebutuhan Anda.
Melalui optimasi ini, manajemen database di PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memiliki efisiensi, keandalan, dan stabilitas yang lebih tinggi, sehingga lebih mudah bagi Anda untuk mengelola dan memelihara data Anda.
Optimasi kueri
Memperkenalkan pengurutan inkremental, di mana data yang diurutkan dari langkah-langkah awal dalam kueri dapat mempercepat pengurutan di langkah-langkah berikutnya. Optimasi ini dapat secara signifikan meningkatkan performa dan efisiensi kueri.
Menambahkan lebih banyak jenis kueri agregat dan set pengelompokan yang dapat memanfaatkan fungsi agregasi hash PostgreSQL yang efisien. Ini berarti bahwa kueri dengan agregasi besar tidak perlu dimuat sepenuhnya ke dalam memori, secara signifikan mengurangi penggunaan memori dan overhead I/O.
Mendukung
linear search TO hash table probe, yang dapat secara signifikan meningkatkan performa pemrosesan pernyataan IN. Peningkatan performa lebih signifikan, terutama dalam SQL dengan beberapa kondisi atau memerlukan penyaringan sejumlah besar data.
Dukungan untuk algoritma kompresi LZ4 dan fitur keamanan yang ditingkatkan
PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memperkenalkan beberapa fitur baru, termasuk dukungan untuk memilih algoritma LZ4 untuk kompresi kolom data untuk meningkatkan performa kompresi, sambil tetap mempertahankan dukungan untuk metode kompresi pglz asli. Selain itu, Anda dapat menggunakan peran yang telah ditentukan sebelumnya pg_read_all_data dan pg_write_all_data untuk memberikan izin baca-saja atau tulis-saja untuk objek tabel/tampilan/urutan sekaligus, memberikan Anda opsi manajemen data yang lebih fleksibel.
Versi 2.0 mengadopsi granularitas izin objek untuk manajemen izin berbasis cloud, memastikan keamanan dan keandalan data. Optimasi ini melindungi data sensitif dan mencegah kebocoran data dan pelanggaran keamanan.
Fitur inti
Kompatibilitas tipe data
Kompatibilitas fungsi dan operator
Kompatibilitas sintaksis SQL
Kompatibilitas sintaksis DDL
Fungsionalitas tabel partisi
Kemampuan pemrosesan transaksi
Fungsionalitas pemicu
Mendukung pemicu sistem DDL, memudahkan penanganan pemicu terkait operasi DDL.
Mendukung
ALTER TRIGGER ENABLE/DISABLEuntuk mengelola pemicu sistem, memudahkan kontrol perilaku pemicu.Mendukung pemicu sistem DDL di level
Skema/Database, memudahkan penanganan operasi DDL di level yang sesuai.Mendukung sintaksis
updating('col')untuk subfungsi pemicu, memudahkan penanganan logika pemicu yang kompleks.
Dukungan pemrograman PL/SQL
Fungsionalitas paket
Mendukung pembuatan dan penghapusan fungsionalitas paket kustom.
Mendukung tipe koleksi umum seperti larik asosiatif, tabel bertingkat, dan larik panjang variabel.
Mendukung operasi inisialisasi, pemanggilan, dan penugasan dasar untuk tipe koleksi.
Mendukung
SUBTYPEsatu dimensi dalam paket, memperluas dukungan model data untuk paket.Tipe
recordpaket mendukungconstraint, memastikan integritas data.Mendukung akses paket tidak peka huruf besar/kecil.
Mendukung fungsi paket bergantung pada tipe yang didefinisikan kemudian.
Mendukung prosedur tersimpan fungsi paket mengabaikan nilai default.
Mendukung penggunaan variabel paket untuk menentukan jenis parameter fungsi paket.
Mendukung variabel paket sebagai variabel prosedur tersimpan dan nilai default untuk parameter subfungsi.
Dukungan tipe koleksi
Mendukung penggunaan larik asosiatif sebagai parameter dan nilai pengembalian, memudahkan penanganan struktur data yang kompleks.
Mendukung deklarasi data panjang variabel yang setara, menyederhanakan logika manajemen ruang tipe koleksi.
Rentang tipe koleksi dapat dihapus.
Mendukung larik asosiatif bawaan dalam paket bawaan.
Mendukung larik asosiatif tiga dimensi, memperluas fungsionalitas tipe koleksi.
Mendukung elemen larik asosiatif sebagai
recorddua dimensi, meningkatkan ekspresi tipe komposit, dan mendukung penyusunan bersarang dengan record.Mendukung
fetch bulk intoke tipe koleksicoll(idx).recfield, mengoptimalkan efisiensi eksekusi DML.Mendukung penggunaan tipe koleksi dimensi tinggi dalam pernyataan DML.
Mendukung nilai default untuk parameter fungsi tipe koleksi.
Mendukung konstruktor larik asosiatif.
Mendukung operasi konversi dan operasi himpunan untuk tipe koleksi.
Ekosistem paket bawaan
PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 menyediakan rangkaian paket bawaan yang kompatibel dengan Oracle yang mencakup berbagai aspek aplikasi perusahaan:
DBMS_AQ: Menyediakan fungsi untuk operasi enqueue dan dequeue antrian pesan.
DBMS_AQADM: Menyediakan fungsi konfigurasi dan manajemen untuk antrian pesan.
DBMS_ALERT: Menyediakan serangkaian prosedur tersimpan untuk pendaftaran, pengiriman, dan penerimaan notifikasi.
DBMS_APPLICATION_INFO: Mencatat nama modul atau transaksi yang sedang dijalankan dalam database untuk pelacakan performa dan debugging.
DBMS_CRYPTO: Menyediakan fungsi enkripsi dan dekripsi untuk data yang disimpan, mendukung fungsi AES, DES, hashing, dan message digest.
DBMS_DDL: Memfasilitasi operasi terkait DDL.
DBMS_JOB: Digunakan untuk membuat dan mengelola tugas terjadwal, memungkinkan pengguna mengirimkan tugas terjadwal untuk dijalankan di database pada waktu yang ditentukan.
DBMS_LOB: Menyediakan metode akses dan operasi untuk objek besar, termasuk
BLOBdanCLOB.DBMS_LOCK: Menyediakan fungsi bawaan
SLEEPuntuk menjeda sesi saat ini selama periode tertentu.DBMS_METADATA: Menyediakan metode untuk mendapatkan informasi metadata untuk objek database, digunakan untuk merekonstruksi objek dalam database.
DBMS_MVIEW: Mendukung
REFRESHtanpa menyertakan objek dependen.DBMS_OUTPUT: Dapat mengirim pesan dari prosedur tersimpan, paket, atau pemicu.
DBMS_XMLGEN: Menyediakan fungsi
convertuntuk menangani konversi data XML.DBMS_XMLPARSER: Menyediakan metode parsing untuk dokumen XML, yang dapat digunakan untuk menghasilkan objek Dokumen.
DBMS_PIPE: Mendukung komunikasi pipa antar sesi yang berbeda dalam instance yang sama.
DBMS_RANDOM: Menyediakan serangkaian fungsi dan prosedur acak.
DBMS_REDACT: Menyediakan fungsi untuk masking data kueri oleh pengguna atau aplikasi dengan hak istimewa rendah, melindungi keamanan data database.
DBMS_RLS: Memungkinkan Virtual Private Database (VPD) dijalankan pada objek database PolarDB tertentu.
DBMS_SESSION: Menyediakan antarmuka untuk mengakses sesi, pengguna, dan informasi lainnya dari PL/SQL.
DBMS_SPACE: Memfasilitasi operasi terkait manajemen ruang.
DBMS_SQL: Menyediakan antarmuka untuk mengeksekusi pernyataan DML dan DDL menggunakan SQL dinamis, mengeksekusi blok anonim PL/SQL, dan memanggil prosedur tersimpan dan fungsi PL/SQL.
DBMS_TRANSACTION: Digunakan untuk operasi terkait transaksi.
DBMS_UTILITY: Menyediakan berbagai subrutin utilitas, pengambilan dependensi paket.
DBMS_XMLDOM: Menyediakan antarmuka akses DOM untuk dokumen XML, mendukung definisi dan pembuatan berbagai objek DOM.
UTL_ENCODE: Menyediakan serangkaian fungsi untuk pengkodean dan dekode data, memudahkan transmisi data antar host yang berbeda.
UTL_I18N: Menyediakan layanan yang terdiri dari fungsi
ESCAPE_REFERENCEdanUNESCAPE_REFERENCE, memberikan kemampuan globalisasi tambahan untuk aplikasi yang ditulis dalam PL/SQL.UTL_MATCH: Meningkatkan fungsionalitas pencocokan pola string, menyederhanakan proses operasi teks.
UTL_HTTP: Memperluas fungsionalitas interaksi Web.
UTL_RAW: Menyediakan fungsi untuk memanipulasi data tipe RAW.
UTL_TCP: Memperkuat fungsionalitas komunikasi TCP, memperluas skenario transmisi jaringan.
UTL_URL: Menyediakan metode untuk mengonversi karakter tidak valid dan karakter cadangan dalam URL.
Kompatibilitas tampilan sistem
Mendukung tampilan umum Oracle seperti
ALL_PART_KEY_COLUMNS,USER_PART_KEY_COLUMNS,DBA_PART_KEY_COLUMNS,DBA_ROLE_PRIVS,USER_ROLE_PRIVS.Mendukung tampilan
DBA_COL_COMMENTSuntuk melihat dan mengelola informasi komentar kolom.Mendukung tampilan parameter
nls, memperluas dukungan untuk parameter internasionalisasi, meningkatkan manajemen konfigurasi multibahasa.Mendukung tampilan
DBA_TAB_COLUMNSdengan semua parameter, memberikan informasi kolom tabel yang lebih komprehensif.Mendukung tampilan bawaan
SESSION_ROLE, memperluas fungsionalitas manajemen peran sesi.Mendukung tampilan
USER_TAB_PARTITIONSbidangHIGH_VALUE, mengoptimalkan manajemen nilai tinggi tabel partisi.Mendukung tampilan
DBA_OBJECTSbidangCREATEDuntuk melihat waktu pembuatan objek.
Fitur tingkat lanjut lainnya
Perbedaan kompatibilitas sintaksis
PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 memiliki perbedaan berikut dibandingkan Versi 1.0:
Tipe | Deskripsi |
Tipe data | Tidak mendukung tipe |
Sintaksis DDL |
|
Tampilan dan tabel partisi |
|
Fungsi, prosedur tersimpan, dan pemicu |
|
Transaksi | Jika operasi tulis terjadi dalam transaksi otonom, transaksi tersebut harus dikomit atau dibatalkan secara eksplisit. Jika tidak, transaksi gagal. |
Kueri SQL |
|
Paket |
|
PL/SQL dan tipe koleksi |
|