Bagikan melalui


Ekstensi PostgreSQL di Azure Database for PostgreSQL - Flexible Server

BERLAKU UNTUK: Azure Database for PostgreSQL - Server Fleksibel

Server fleksibel Azure Database for PostgreSQL menyediakan kemampuan untuk memperluas fungsionalitas database Anda menggunakan ekstensi. Ekstensi menggabungkan beberapa objek SQL terkait dalam satu paket yang dapat dimuat atau dihapus dari database Anda dengan perintah. Setelah dimuat ke dalam database, ekstensi berfungsi seperti fitur bawaan.

Cara menggunakan ekstensi PostgreSQL

Sebelum menginstal ekstensi di server fleksibel Azure Database for PostgreSQL, Anda perlu mengizinkan daftar ekstensi ini untuk digunakan.

Menggunakan Portal Azure:

  1. Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
    1. Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
    2. Cari parameter azure.extensions.
    3. Pilih ekstensi yang ingin Anda izinkan. Cuplikan layar memperlihatkan server fleksibel Azure Database for PostgreSQL - ekstensi izinkan daftar untuk penginstalan.

Menggunakan Azure CLI:

Anda dapat mengizinkan ekstensi daftar melalui perintah set parameter CLI.

az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>

Menggunakan Templat ARM: Contoh berikut mengizinkan ekstensi dblinkdaftar , , dict_xsynpg_buffercache di server yang namanya adalah postgres-test-server:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "postgres-test-server",
            "type": "String"
        },
        "azure_extensions_set_value": {
            "defaultValue": " dblink,dict_xsyn,pg_buffercache",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
            "apiVersion": "2021-06-01",
            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
            "properties": {
                "value": "[parameters('azure_extensions_set_value')]",
                "source": "user-override"
            }
        }
    ]
}

shared_preload_libraries adalah parameter konfigurasi server yang menentukan pustaka mana yang harus dimuat saat server fleksibel Azure Database for PostgreSQL dimulai. Pustaka apa pun yang menggunakan memori bersama harus dimuat melalui parameter ini. Jika ekstensi Anda perlu ditambahkan ke pustaka pramuat bersama, ikuti langkah-langkah berikut:

Menggunakan Portal Azure:

  1. Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
    1. Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
    2. Cari parameter shared_preload_libraries.
    3. Pilih pustaka yang ingin Anda tambahkan.
 :::image type="content" source="./media/concepts-extensions/shared-libraries.png" alt-text="Screenshot showing Azure Database for PostgreSQL -setting shared preload libraries parameter setting for extensions installation." lightbox="./media/concepts-extensions/shared-libraries.png":::
```Using [Azure CLI](/cli/azure/):

   You can set `shared_preload_libraries` via CLI [parameter set](/cli/azure/postgres/flexible-server/parameter?view=azure-cli-latest&preserve-view=true) command.

   ```azurecli
az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>

Buat Ekstensi

Setelah ekstensi diizinkan dan dimuat, ekstensi harus diinstal di setiap database tempat Anda berencana untuk menggunakannya.

  1. Pengguna harus menjadi anggota azure_pg_admin peran untuk membuat ekstensi. Anggota azure_pg_admin peran dapat memberikan hak istimewa kepada pengguna lain untuk membuat ekstensi.
  2. Untuk menginstal ekstensi tertentu, Anda harus menjalankan perintah BUAT EKSTENSI. Perintah ini memuat objek yang dikemas ke dalam database Anda.

Catatan

Ekstensi pihak ketiga yang ditawarkan di server fleksibel Azure Database for PostgreSQL sumber terbuka kode berlisensi. Saat ini, kami tidak menawarkan ekstensi pihak ketiga atau versi ekstensi dengan model lisensi premium atau kepemilikan.

Instans server fleksibel Azure Database for PostgreSQL mendukung subset ekstensi PostgreSQL utama seperti yang tercantum dalam tabel berikut. Informasi ini juga tersedia dengan menjalankan SHOW azure.extensions;. Ekstensi yang tidak tercantum dalam dokumen ini tidak didukung di server fleksibel Azure Database for PostgreSQL. Anda tidak dapat membuat atau memuat ekstensi Anda sendiri di server fleksibel Azure Database for PostgreSQL.

Versi ekstensi

Ekstensi berikut tersedia di server fleksibel Azure Database for PostgreSQL:

Catatan

Ekstensi dalam tabel berikut dengan ✔️ tanda , mengharuskan pustaka terkait diaktifkan dalam shared_preload_libraries parameter server.

Nama ekstensi Keterangan PostgreSQL 17 PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Digunakan untuk menguraikan alamat ke dalam elemen penyusun. Umumnya digunakan untuk mendukung langkah normalisasi alamat geocoding. 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Contoh himpunan data Address Standardizer AS 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
usia (Pratinjau) Menyediakan kemampuan database grafik T/A 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ T/A T/A
amcheck Fungsi untuk memverifikasi integritas hubungan 1.4 1.3 1.3 1.3 1.2 1.2 1.1
anon (Pratinjau) Alat anonimisasi data 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️
azure_ai Integrasi Azure AI dan Layanan ML untuk PostgreSQL T/A 1.1.0 1.1.0 1.1.0 1.1.0 1.1.0 T/A
azure_storage Integrasi Azure untuk PostgreSQL T/A 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ T/A
bloom Metode akses Bloom - indeks berbasis file tanda tangan 1.0 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Dukungan untuk mengindeks jenis data umum di GIN 1.3 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Dukungan untuk mengindeks jenis data umum di GiST 1.7 1.7 1.7 1.6 1.5 1.5 1.5
citext Jenis data untuk string karakter yang tidak peka huruf besar/kecil 1.6 1.6 1.6 1.6 1.6 1.6 1.5
cube Jenis data untuk kubus multidirmensional 1.5 1.5 1.5 1.5 1.4 1.4 1.4
dblink Menyambungkan ke database PostgreSQL lainnya dari dalam database 1.2 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Templat kamus pencarian teks untuk bilangan bulat 1.0 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Templat kamus pencarian teks untuk pemrosesan sinonim yang diperluas 1.0 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance Menghitung jarak lingkaran besar di permukaan Bumi 1.1 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch Menentukan kesamaan dan jarak antar string 1.2 1.2 1.1 1.1 1.1 1.1 1.1
hstore Jenis data untuk menyimpan sekumpulan pasangan (kunci, nilai) 1.8 1.8 1.8 1.8 1.7 1.6 1.5
hypopg Indeks hipotetis untuk PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Agregator bilangan bulat dan enumerator (usang) 1.1 1.1 1.1 1.1 1.1 1.1 1.1
intarray Fungsi, operator, dan dukungan indeks untuk array bilangan bulat 1-D 1.5 1.5 1.5 1.5 1.3 1.2 1.2
isn Jenis data untuk standar penomoran produk internasional 1.2 1.2 1.2 1.2 1.2 1.2 1.2
lo Pemeliharaan Objek Besar 1.1 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook - hook untuk mengeksekusi login_hook.login() pada waktu masuk 1.5 1.5 1.4 1.4 1.4 1.4 1.4
ltree Jenis data untuk struktur seperti pohon hierarkis 1.3 1.2 1.2 1.2 1.2 1.1 1.1
oracle_fdw Pembungkus data asing untuk database Oracle 1.2 1.2 1.2 1.2 1.2 1.2 T/A
orafce Fungsi dan operator yang meniru subset fungsi dan paket dari Oracle RDBMS 4.9 4.4 3.24 3,18 3,18 3,18 3.7
pageinspect Memeriksa konten halaman database pada tingkat rendah 1.12 1.12 1.11 1.9 1.8 1.7 1.7
pgaudit Menyediakan fungsionalitas audit 16.0 ✔️ 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4.3 ✔️ 1.3.2 ✔️
pg_buffercache Memeriksa cache buffer bersama 1.5 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Penjadwal pekerjaan untuk PostgreSQL 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.4-1 ✔️
pgcrypto Fungsi kriptografi 1.3 1.3 1.3 1.3 1.3 1.3 1.3
pg_freespacemap Memeriksa peta ruang kosong (FSM) 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Memungkinkan untuk mengubah rencana eksekusi PostgreSQL menggunakan apa yang disebut petunjuk dalam komentar SQL. 1.7.0 ✔️ 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Replikasi Logis PostgreSQL 2.4.5 ✔️ 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Ekstensi untuk mengelola tabel yang dipartisi berdasarkan waktu atau ID 5.0.1 ✔️ 5.0.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Data relasi prawarm 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Mengatur ulang tabel dalam database PostgreSQL dengan kunci minimal 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Ekstensi PgRouting T/A T/A 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Perlihatkan informasi penguncian tingkat baris 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Alat untuk menghapus ruang yang tidak digunakan dari relasi. 1.7 ✔️ 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements Melacak statistik eksekusi semua pernyataan SQL yang dijalankan 1.11 ✔️ 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple Tampilkan statistik tingkat tuple 1.5 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Pengukuran kesamaan teks dan pencarian indeks berdasarkan trigram 1.6 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility Memeriksa peta visibilitas (VM) dan info visibilitas tingkat halaman 1.2 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql bahasa prosedural PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0 1.0
plv8 bahasa prosedural tepercaya PL/JavaScript (v8) 3.1.7 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
PostGIS Geometri PostGIS dan jenis dan fungsi spasial geografi 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster PostGIS jenis dan fungsi raster 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Fungsi PostGIS SFCGAL 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder PostGIS tiger geocoder dan reverse geocoder 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Fungsi dan jenis spasial topologi PostGIS 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Pembungkus data asing untuk server PostgreSQL jarak jauh 1.1 1.1 1.1 1.1 1.0 1.0 1.0
postgres_protobuf Buffer protokol untuk PostgreSQL 0,2 0,2 0,2 0,2 0,2 0,2 T/A
semver Jenis data versi semantik 0.32.1 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable - pendaftaran dan manipulasi variabel dan konstanta sesi 3.3 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Informasi tentang sertifikat SSL 1.2 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Fungsi yang memanipulasi seluruh tabel, termasuk tab silang 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Pembungkus data asing untuk mengkueri database TDS (Sybase atau Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Mengaktifkan penyisipan yang dapat diskalakan dan kueri kompleks untuk data deret waktu T/A 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows Metode TABLESAMPLE, yang menerima jumlah baris sebagai batas 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time Metode TABLESAMPLE, yang menerima waktu dalam milidetik sebagai batas 1.0 1.0 1.0 1.0 1.0 1.0 1.0
unaccent Kamus pencarian teks yang menghapus aksen 1.1 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp Hasilkan pengidentifikasi unik universal (UUID) 1.1 1.1 1.1 1.1 1.1 1.1 1.1
Vektor Jenis data vektor dan metode akses ivfflat dan hnsw 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.5.1

Meningkatkan ekstensi PostgreSQL

Peningkatan ekstensi database di tempat diizinkan melalui perintah sederhana. Fitur ini memungkinkan pelanggan untuk secara otomatis memperbarui ekstensi pihak ketiga mereka ke versi terbaru, mempertahankan sistem saat ini dan aman tanpa upaya manual.

Memperbarui Ekstensi

Untuk memperbarui ekstensi yang diinstal ke versi terbaru yang tersedia yang didukung oleh Azure, gunakan perintah SQL berikut:

ALTER EXTENSION <extension_name> UPDATE;

Perintah ini menyederhanakan manajemen ekstensi database dengan memungkinkan pengguna meningkatkan ke versi terbaru yang disetujui oleh Azure secara manual, meningkatkan kompatibilitas dan keamanan.

Batasan

Meskipun memperbarui ekstensi mudah, ada batasan tertentu:

  • Pemilihan versi tertentu: Perintah tidak mendukung pembaruan ke versi perantara ekstensi. Ini selalu diperbarui ke versi terbaru yang tersedia.
  • Penurunan: Tidak mendukung penurunan ekstensi ke versi sebelumnya. Jika penurunan tingkat diperlukan, mungkin memerlukan bantuan dukungan dan tergantung pada ketersediaan versi sebelumnya.

Ekstensi yang terpasang

Untuk mencantumkan ekstensi yang saat ini diinstal pada database Anda, gunakan perintah SQL berikut:

SELECT * FROM pg_extension;

Ekstensi yang tersedia dan versinya

Untuk memeriksa versi ekstensi mana yang tersedia untuk penginstalan database Anda saat ini, kueri pg_available_extensions tampilan katalog sistem. Misalnya, untuk menentukan versi yang tersedia untuk ekstensi, jalankan azure_ai:

SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';

Perintah ini memberikan wawasan yang diperlukan tentang konfigurasi ekstensi database Anda, membantu menjaga sistem Anda secara efisien dan aman. Dengan mengaktifkan pembaruan mudah ke versi ekstensi terbaru, Azure Database for PostgreSQL terus mendukung manajemen aplikasi database Anda yang kuat, aman, dan efisien.

Pertimbangan khusus untuk server fleksibel Azure Database for PostgreSQL

Berikut ini adalah daftar ekstensi yang didukung yang memerlukan beberapa pertimbangan khusus saat digunakan dalam layanan server fleksibel Azure Database for PostgreSQL. Daftar diurutkan menurut abjad.

dblink memungkinkan Anda menyambungkan dari satu instans server fleksibel Azure Database for PostgreSQL ke instans lain, atau ke database lain di server yang sama. Server fleksibel Azure Database for PostgreSQL mendukung koneksi masuk dan keluar ke server PostgreSQL apa pun. Server pengirim perlu memperbolehkan sambungan keluar ke server penerima. Demikian pula, server penerima perlu mengizinkan koneksi dari server pengirim.

Sebaiknya sebarkan server Anda dengan integrasi jaringan virtual jika Anda berencana menggunakan ekstensi ini. Secara default, integrasi jaringan virtual memungkinkan koneksi antar server di jaringan virtual. Anda juga dapat memilih untuk menggunakan kelompok keamanan jaringan virtual untuk menyesuaikan akses.

pg_buffercache

pg_buffercache dapat digunakan untuk mempelajari isi shared_buffers. Menggunakan ekstensi ini, Anda dapat mengetahui apakah hubungan tertentu di-cache atau tidak (dalam shared_buffers). Ekstensi ini dapat membantu Anda memecahkan masalah performa (penembolokan masalah performa terkait).

Ekstensi ini terintegrasi dengan penginstalan inti PostgreSQL, dan mudah diinstal.

CREATE EXTENSION pg_buffercache;

pg_cron

pg_cron adalah penjadwal pekerjaan sederhana berbasis cron untuk PostgreSQL yang berjalan di dalam database sebagai ekstensi. pg_cron Ekstensi dapat digunakan untuk menjalankan tugas pemeliharaan terjadwal dalam database PostgreSQL. Misalnya, Anda dapat menjalankan vakum tabel secara berkala atau menghapus tugas data lama.

pg_cron dapat menjalankan beberapa pekerjaan secara paralel, tetapi vakum tabel tersebut berjalan paling banyak satu instans pekerjaan pada satu waktu. Jika eksekusi kedua seharusnya dimulai sebelum yang pertama selesai, maka eksekusi kedua diantrikan dan dimulai segera setelah eksekusi pertama selesai. Dengan cara seperti itu, dipastikan bahwa pekerjaan berjalan tepat sebanyak yang dijadwalkan dan tidak berjalan bersamaan dengan diri mereka sendiri.

Beberapa contoh:

Untuk menghapus data lama pada hari Sabtu pukul 03.30 (GMT).

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

Untuk menjalankan vakum setiap hari pada pukul 10:00 (GMT) dalam database postgresdefault .

SELECT cron.schedule('0 10 * * *', 'VACUUM');

Untuk membatalkan jadwal semua tugas dari pg_cron.

SELECT cron.unschedule(jobid) FROM cron.job;

Untuk melihat semua pekerjaan yang saat ini dijadwalkan dengan pg_cron.

SELECT * FROM cron.job;

Untuk menjalankan vakum setiap hari pada pukul 10.00 (GMT) di database 'testcron' di bawah akun peran azure_pg_admin.

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);

Catatan

ekstensi pg_cron dimuat sebelumnya untuk setiap instans server fleksibel Azure Database for PostgreSQL di shared_preload_libraries dalam database postgres untuk memberi Anda kemampuan untuk menjadwalkan pekerjaan untuk dijalankan di database lain dalam instans DB server fleksibel Azure Database for PostgreSQL Anda tanpa mengorbankan keamanan. Namun, untuk alasan keamanan, Anda masih harus mengizinkan ekstensi daftar pg_cron dan menginstalnya menggunakan perintah CREATE EXTENSION.

Dimulai dengan pg_cron versi 1.4, Anda dapat menggunakan cron.schedule_in_database fungsi dan cron.alter_job untuk menjadwalkan pekerjaan Anda dalam database tertentu dan memperbarui jadwal yang ada masing-masing.

Beberapa contoh:

Untuk menghapus data lama pada hari Sabtu pukul 03.30 (GMT) di database DBName.

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

Catatan

cron_schedule_in_database fungsi memungkinkan nama pengguna sebagai parameter opsional. Mengatur nama pengguna ke nilai non-null memerlukan hak istimewa superuser PostgreSQL dan tidak didukung di server fleksibel Azure Database for PostgreSQL. Contoh sebelumnya menunjukkan menjalankan fungsi ini dengan parameter nama pengguna opsional yang dihilangkan atau diatur ke null, yang menjalankan pekerjaan dalam konteks penjadwalan pengguna pekerjaan, yang seharusnya memiliki hak istimewa peran azure_pg_admin.

Untuk memperbarui atau mengubah nama database bagi jadwal yang sudah ada

SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots

Ekstensi Slot Failover PG meningkatkan server fleksibel Azure Database for PostgreSQL saat beroperasi dengan replikasi logis dan server dengan ketersediaan tinggi yang diaktifkan. Ini secara efektif mengatasi tantangan dalam mesin PostgreSQL standar yang tidak mempertahankan slot replikasi logis setelah failover. Mempertahankan slot ini sangat penting untuk mencegah jeda replikasi atau ketidakcocokan data selama perubahan peran server utama, memastikan kelangsungan operasional dan integritas data.

Ekstensi menyederhanakan proses failover dengan mengelola transfer, pembersihan, dan sinkronisasi slot replikasi yang diperlukan, sehingga memberikan transisi yang mulus selama perubahan peran server. Ekstensi ini didukung untuk PostgreSQL versi 11 hingga 16.

Anda dapat menemukan informasi selengkapnya dan cara menggunakan ekstensi Slot Failover PG di halaman GitHub-nya.

Mengaktifkan pg_failover_slots

Untuk mengaktifkan ekstensi Slot Failover PG untuk instans server fleksibel Azure Database for PostgreSQL, Anda perlu memodifikasi konfigurasi server dengan menyertakan ekstensi di pustaka pramuat bersama server dan menyesuaikan parameter server tertentu. Berikut prosesnya:

  1. Tambahkan pg_failover_slots ke pustaka pramuat bersama server dengan memperbarui shared_preload_libraries parameter .
  2. Ubah parameter hot_standby_feedback server menjadi on.

Setiap perubahan pada shared_preload_libraries parameter mengharuskan mulai ulang server diterapkan.

Menggunakan Portal Azure:

  1. Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
  2. Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
  3. Cari shared_preload_libraries parameter dan edit nilainya untuk menyertakan pg_failover_slots.
  4. Cari hot_standby_feedback parameter dan atur nilainya ke on.
  5. Pilih Simpan untuk mempertahankan perubahan Anda. Sekarang, Anda memiliki opsi untuk Menyimpan dan memulai ulang. Pilih ini untuk memastikan bahwa perubahan berlaku, karena modifikasi memerlukan menghidupkan shared_preload_libraries ulang server.

Dengan memilih Simpan dan mulai ulang, server Anda secara otomatis memulai ulang, menerapkan perubahan yang baru saja dibuat. Setelah server kembali online, ekstensi Slot Failover PG diaktifkan dan beroperasi pada instans server fleksibel Azure Database for PostgreSQL utama Anda, siap untuk menangani slot replikasi logis selama failover.

pg_hint_plan

pg_hint_plan memungkinkan untuk mengubah rencana eksekusi PostgreSQL menggunakan apa yang disebut "petunjuk" dalam komentar SQL, seperti:

/*+ SeqScan(a) */

pg_hint_plan membaca frasa petunjuk dalam komentar formulir khusus yang diberikan dengan pernyataan SQL target. Bentuk khusus dimulai dengan urutan karakter "/*+" dan diakhir dengan "*/". Frasa petunjuk terdiri dari nama petunjuk dan parameter berikut yang diapit oleh tanda kurung dan dibatasi oleh spasi. Baris baru untuk keterbacaan dapat memisahkan setiap frasa petunjuk.

Contoh:

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

Contoh sebelumnya menyebabkan perencana menggunakan hasil seq scan pada tabel a dikombinasikan dengan tabel b sebagai hash join.

Untuk menginstal pg_hint_plan, selain itu, untuk memungkinkan mencantumkannya, seperti yang ditunjukkan dalam cara menggunakan ekstensi PostgreSQL, Anda perlu menyertakannya dalam pustaka pramuat bersama server. Perubahan pada parameter shared_preload_libraries Postgres mengharuskan hidupkan ulang server berlaku. Anda dapat mengubah parameter dengan menggunakan portal Microsoft Azure atau Azure CLI.

Menggunakan Portal Azure:

  1. Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
  2. Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
  3. Cari shared_preload_libraries parameter dan edit nilainya untuk menyertakan pg_hint_plan.
  4. Pilih Simpan untuk mempertahankan perubahan Anda. Sekarang, Anda memiliki opsi untuk Menyimpan dan memulai ulang. Pilih ini untuk memastikan bahwa perubahan berlaku, karena modifikasi memerlukan menghidupkan shared_preload_libraries ulang server. Sekarang Anda dapat mengaktifkan pg_hint_plan database server fleksibel Azure Database for PostgreSQL Anda. Sambungkan ke database dan jalankan perintah berikut:
CREATE EXTENSION pg_hint_plan;

pg_prewarm

pg_prewarm Ekstensi memuat data relasional ke dalam cache. Dengan memanaskan cache terlebih dahulu, kueri Anda memiliki waktu respons yang lebih baik pada eksekusi pertama setelah dihidupkan ulang. Fungsionalitas auto-prewarm saat ini tidak tersedia di server fleksibel Azure Database for PostgreSQL.

pg_repack

Pertanyaan umum yang ditanyakan orang ketika mereka pertama kali mencoba menggunakan ekstensi ini adalah: Apakah pg_repack ekstensi atau sisi klien yang dapat dieksekusi seperti psql atau pg_dump?

Jawaban untuk itu adalah bahwa itu sebenarnya keduanya. pg_repack/lib memegang kode untuk ekstensi, termasuk skema dan artefak SQL yang dibuatnya, dan pustaka C yang mengimplementasikan kode beberapa fungsi tersebut. Di sisi lain, pg_repack/bin menyimpan kode untuk aplikasi klien, yang tahu cara berinteraksi dengan artefak kemampuan pemrograman yang dibuat oleh ekstensi. Aplikasi klien ini bertujuan untuk memudahkan kompleksitas berinteraksi dengan berbagai antarmuka yang muncul oleh ekstensi sisi server, dengan cara menawarkan pengguna beberapa opsi baris perintah yang lebih mudah dipahami. Aplikasi klien tanpa ekstensi yang dibuat pada database yang ditunjukkannya, tidak berguna. Ekstensi sisi server sendiri akan berfungsi penuh, tetapi akan mengharuskan pengguna untuk memahami pola interaksi rumit yang terdiri dari menjalankan kueri untuk mengambil data yang digunakan sebagai input ke fungsi yang diterapkan oleh ekstensi.

Izin ditolak untuk paket ulang skema

Mulai sekarang, karena cara kami memberikan izin ke skema paket ulang yang dibuat oleh ekstensi ini, hanya didukung untuk menjalankan fungsionalitas pg_repack dari konteks azure_pg_admin.

Anda mungkin melihat bahwa jika pemilik tabel, yang bukan azure_pg_admin, mencoba menjalankan pg_repack, mereka akhirnya menerima kesalahan seperti berikut:

NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR:  permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()

Untuk menghindari kesalahan tersebut, pastikan Anda menjalankan pg_repack dari konteks azure_pg_admin.

pg_stat_statements

Ekstensi pg_stat_statements memberi Anda tampilan semua kueri yang telah berjalan di database Anda. Hal ini berguna untuk mendapatkan pemahaman tentang seperti apa performa beban kerja kueri Anda pada sistem produksi.

Ekstensi pg_stat_statements telah dimuat sebelumnya di shared_preload_libraries setiap instans server fleksibel Azure Database for PostgreSQL untuk memberi Anda sarana pelacakan statistik eksekusi pernyataan SQL. Namun, untuk alasan keamanan, Anda masih harus mengizinkanpg_stat_statements ekstensi dan menginstalnya menggunakan perintah CREATE EXTENSION. Pengaturan pg_stat_statements.track, yang mengontrol pernyataan apa yang dihitung oleh ekstensi, default ke top, yang berarti semua pernyataan yang dikeluarkan langsung oleh klien dilacak. Dua tingkat pelacakan lainnya adalah none dan all. Setelan ini bisa dikonfigurasi sebagai parameter server.

Ada tradeoff antara penyediaan informasi eksekusi kueri pg_stat_statements dan dampak pada performa server saat mencatat setiap pernyataan SQL. Jika Anda tidak secara aktif menggunakan pg_stat_statements ekstensi, kami sarankan Anda mengatur pg_stat_statements.track ke none. Beberapa layanan pemantauan pihak ketiga mungkin mengandalkan pg_stat_statements untuk memberikan wawasan performa kueri, jadi konfirmasi apakah ini terjadi untuk Anda atau tidak.

postgres_fdw

postgres_fdw memungkinkan Anda menyambungkan dari satu instans server fleksibel Azure Database for PostgreSQL ke instans lain, atau ke database lain di server yang sama. Server fleksibel Azure Database for PostgreSQL mendukung koneksi masuk dan keluar ke server PostgreSQL apa pun. Server pengirim perlu memperbolehkan sambungan keluar ke server penerima. Demikian pula, server penerima perlu mengizinkan koneksi dari server pengirim.

Sebaiknya sebarkan server Anda dengan integrasi jaringan virtual jika Anda berencana menggunakan ekstensi ini. Secara default, integrasi jaringan virtual memungkinkan koneksi antar server di jaringan virtual. Anda juga dapat memilih untuk menggunakan kelompok keamanan jaringan virtual untuk menyesuaikan akses.

pgstattuple

Saat menggunakan ekstensi 'pgstattuple' untuk mencoba mendapatkan statistik tuple dari objek yang disimpan dalam pg_toast skema dalam versi Postgres 11 hingga 13, Anda akan menerima kesalahan "izin ditolak untuk skema pg_toast".

Izin ditolak untuk pg_toast skema

Pelanggan yang menggunakan PostgreSQL versi 11 hingga 13 di Azure Database for Flexible Server tidak dapat menggunakan pgstattuple ekstensi pada objek dalam pg_toast skema.

Di PostgreSQL 16 dan 17, pg_read_all_data peran secara otomatis diberikan kepada azure_pg_admin, memungkinkan pgstattuple untuk berfungsi dengan benar. Dalam PostgreSQL 14 dan 15, pelanggan dapat secara manual memberikan pg_read_all_data peran untuk azure_pg_admin mencapai hasil yang sama. Namun, di PostgreSQL 11 hingga 13, peran tidak pg_read_all_data ada.

Pelanggan tidak dapat langsung memberikan izin yang diperlukan. Jika Anda harus dapat menjalankan pgstattuple untuk mengakses objek di bawah pg_toast skema, silakan lanjutkan untuk membuat permintaan dukungan Azure.

TimescaleDB

TimescaleDB adalah database deret waktu yang dikemas sebagai ekstensi untuk PostgreSQL. TimescaleDB menyediakan fungsi analitik berorientasi waktu, pengoptimalan, dan Postgres penskalaan untuk beban kerja deret waktu. Pelajari selengkapnya tentang TimescaleDB, merek dagang terdaftar Timescale, Inc. Server fleksibel Azure Database for PostgreSQL menyediakan edisi TimescaleDB Apache-2.

Menginstal TimescaleDB

Untuk menginstal TimescaleDB, selain itu, untuk mengizinkan daftarnya, seperti yang ditunjukkan di atas, Anda perlu menyertakannya dalam pustaka pramuat bersama server. Perubahan pada parameter shared_preload_libraries Postgres mengharuskan hidupkan ulang server berlaku. Anda dapat mengubah parameter dengan menggunakan portal Microsoft Azure atau Azure CLI.

Menggunakan Portal Azure:

  1. Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
  2. Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
  3. Cari shared_preload_libraries parameter dan edit nilainya untuk menyertakan TimescaleDB.
  4. Pilih Simpan untuk mempertahankan perubahan Anda. Sekarang, Anda memiliki opsi untuk Menyimpan dan memulai ulang. Pilih ini untuk memastikan bahwa perubahan berlaku, karena modifikasi memerlukan menghidupkan shared_preload_libraries ulang server. Sekarang Anda dapat mengaktifkan TimescaleDB di database server fleksibel Azure Database for PostgreSQL Anda. Sambungkan ke database dan jalankan perintah berikut:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Tip

Jika Anda melihat kesalahan, konfirmasikan bahwa Anda memulai ulang server Anda setelah menyimpan shared_preload_libraries.

Anda sekarang dapat membuat hypertable TimescaleDB dari awal atau memigrasikan data deret waktu yang ada di PostgreSQL.

Memulihkan database Timescale menggunakan pg_dump dan pg_restore

Untuk memulihkan database Timescale menggunakan pg_dump dan pg_restore, Anda harus menjalankan dua prosedur pembantu dalam database tujuan: timescaledb_pre_restore() dan timescaledb_post restore().

Pertama, siapkan database tujuan:

--create the new database where you want to perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Sekarang Anda dapat menjalankan pg_dump pada database asli dan kemudian melakukan pg_restore. Setelah pemulihan, pastikan untuk menjalankan perintah berikut di database yang dipulihkan:

SELECT timescaledb_post_restore();

Untuk detail selengkapnya tentang metode pemulihan dengan database yang diaktifkan Timescale, lihat Dokumentasi Timescale.

Memulihkan database Timescale menggunakan timescaledb-backup

Saat menjalankan SELECT timescaledb_post_restore() prosedur yang tercantum di atas, Anda mungkin mendapatkan izin ditolak kesalahan saat memperbarui bendera timescaledb.restoring. Hal ini disebabkan oleh izin ALTER DATABASE yang terbatas di layanan database Cloud PaaS. Dalam hal ini Anda dapat melakukan metode alternatif menggunakan timescaledb-backup alat untuk mencadangkan dan memulihkan database Timescale. Timescaledb-backup adalah program untuk membuat cadangan dan memulihkan database TimescaleDB dengan lebih sederhana, sedikit rawan kesalahan, dan lebih berperforma.
Untuk melakukannya, Anda harus melakukan hal berikut

  1. Instal alat seperti yang dijelaskan di sini
    1. Membuat instans dan database server fleksibel Azure Database for PostgreSQL target
    2. Mengaktifkan ekstensi Skala Waktu seperti yang ditunjukkan di atas
    3. Memberikan azure_pg_admin peran kepada pengguna yang akan digunakan oleh ts-restore
    4. Menjalankan ts-restore untuk memulihkan database

Detail selengkapnya tentang utilitas ini dapat ditemukan di sini.

Ekstensi dan Peningkatan Versi Utama

Server fleksibel Azure Database for PostgreSQL telah memperkenalkan fitur peningkatan versi utama di tempat yang melakukan peningkatan di tempat instans server fleksibel Azure Database for PostgreSQL hanya dengan sekali klik. Peningkatan versi utama di tempat menyederhanakan proses peningkatan server fleksibel Azure Database for PostgreSQL, meminimalkan gangguan pada pengguna dan aplikasi yang mengakses server. Peningkatan versi utama di tempat tidak mendukung ekstensi tertentu, dan ada beberapa batasan untuk meningkatkan ekstensi tertentu. Ekstensi anon, Apache AGE, dblink, orafce, pgaudit, postgres_fdw, dan Timescaledb tidak didukung untuk semua versi server fleksibel Azure Database for PostgreSQL saat menggunakan fitur pembaruan versi utama di tempat.