Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
- Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
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 dblink
daftar , , dict_xsyn
pg_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:
- Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
- Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
- Cari parameter
shared_preload_libraries
. - 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.
- Pengguna harus menjadi anggota
azure_pg_admin
peran untuk membuat ekstensi. Anggotaazure_pg_admin
peran dapat memberikan hak istimewa kepada pengguna lain untuk membuat ekstensi. - 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
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 postgres
default .
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:
- Tambahkan
pg_failover_slots
ke pustaka pramuat bersama server dengan memperbaruishared_preload_libraries
parameter . - Ubah parameter
hot_standby_feedback
server menjadion
.
Setiap perubahan pada shared_preload_libraries
parameter mengharuskan mulai ulang server diterapkan.
Menggunakan Portal Azure:
- Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
- Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
- Cari
shared_preload_libraries
parameter dan edit nilainya untuk menyertakanpg_failover_slots
. - Cari
hot_standby_feedback
parameter dan atur nilainya keon
. - 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:
- Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
- Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
- Cari
shared_preload_libraries
parameter dan edit nilainya untuk menyertakanpg_hint_plan
. - 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:
- Pilih instans server fleksibel Azure Database for PostgreSQL Anda.
- Dari menu sumber daya, di bagian Pengaturan , pilih Parameter server.
- Cari
shared_preload_libraries
parameter dan edit nilainya untuk menyertakanTimescaleDB
. - 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
- Instal alat seperti yang dijelaskan di sini
- Membuat instans dan database server fleksibel Azure Database for PostgreSQL target
- Mengaktifkan ekstensi Skala Waktu seperti yang ditunjukkan di atas
- Memberikan
azure_pg_admin
peran kepada pengguna yang akan digunakan oleh ts-restore - 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.