All Products
Search
Document Center

PolarDB:pg_profile (Pemantauan Sumber Daya)

Last Updated:Dec 18, 2025

pg_profile adalah ekstensi pihak ketiga yang didukung oleh PolarDB for PostgreSQL dan . Ekstensi ini mengumpulkan statistik mengenai aktivitas yang intensif sumber daya di database target untuk membantu Anda menganalisis dan mengoptimalkan kinerja database tersebut. Ekstensi ini dibangun berdasarkan statistical views PostgreSQL dan beberapa ekstensi komunitas, serta ditulis sepenuhnya dalam PL/pgSQL tanpa memerlukan library atau perangkat lunak eksternal. Saat digunakan bersama ekstensi pg_cron, Anda dapat mengumpulkan data secara berkala dan memantau aktivitas yang intensif sumber daya.

Cakupan

Versi PolarDB for PostgreSQL berikut ini didukung:

  • PostgreSQL 16 (versi mesin minor 2.0.16.9.9.0 atau lebih baru)

  • PostgreSQL 15 (versi mesin minor 2.0.15.14.6.0 atau lebih baru)

  • PostgreSQL 14 (versi mesin minor 2.0.14.10.18.0 atau lebih baru)

Catatan

Anda dapat melihat versi mesin minor di console atau dengan menjalankan pernyataan SHOW polardb_version;. Jika kluster Anda tidak memenuhi persyaratan versi mesin minor, upgrade the minor engine version.

Catatan

  • Pengumpulan data memerlukan ekstensi pg_stat_statements dan pg_stat_kcache. Pastikan keduanya telah ditambahkan ke parameter shared_preload_libraries pada database yang diambil sampelnya. Kedua ekstensi ini dimuat secara default.

    Catatan

    Untuk informasi selengkapnya tentang cara mengubah parameter shared_preload_libraries, lihat Set cluster parameters. Mengubah parameter ini akan me-restart kluster. Rencanakan operasi bisnis Anda dengan cermat sebelum melanjutkan.

  • Di database yang diambil sampelnya, Anda harus membuat ekstensi pg_stat_statements. Anda juga dapat membuat ekstensi pg_stat_kcache untuk mengumpulkan informasi tambahan.

  • Menyimpan informasi sampel mengonsumsi ruang disk. Ekstensi ini memiliki mekanisme pembersihan otomatis, tetapi Anda tetap harus mengelola retensi data.

  • Satu operasi pengambilan sampel memakan waktu cukup lama. Oleh karena itu, hindari pengambilan sampel terlalu sering. Frekuensi yang disarankan adalah satu hingga dua kali per jam.

Penggunaan

Catatan

Karena pembatasan keamanan dblink, database profil dan database server harus dibuat dalam kluster PolarDB for PostgreSQL atau yang sama.

Langkah-langkah berikut menjelaskan cara membuat database server dan database profil.

Saat pengambilan sampel, database profil mengirim permintaan pengambilan sampel ke database server. Setelah menerima permintaan tersebut, database server mengembalikan statistiknya ke database profil. Statistik tersebut kemudian disimpan dalam sebuah tabel, sehingga memungkinkan Anda mengambil statistik dari database lain melalui database profil.

Database server

Buat database server:

CREATE DATABASE server;

Sambungkan ke database server dan buat ekstensi statistik:

\c server
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS pg_stat_kcache;

Database profil

Buat database profil:

CREATE DATABASE profile;

Hubungkan ke database profil dan buat ekstensi:

\c profile
CREATE EXTENSION IF NOT EXISTS pg_profile CASCADE;

Buat koneksi pengambilan sampel

SELECT create_server(
   'server',
   'dbname=server channel_name=localhost user=<privileged_account_of_the_server_database> password=<password_for_the_account>'
);

Tabel berikut menjelaskan parameter-parameternya.

Parameter

Contoh

Deskripsi

server

server

Nama koneksi. Ini ditentukan oleh pengguna.

dbname

server

Nama database.

channel_name

localhost

Informasi koneksi. Hanya `localhost` yang didukung.

user

test_user

Akun istimewa untuk kluster tempat database server berada.

password

T123456!

Kata sandi untuk akun tersebut.

Contoh berikut menunjukkan keluarannya:

                                    show_servers
-------------------------------------------------------------------------------------
 (server,"dbname=server channel_name=localhost user=test_user password=****",t,)
(1 row)

Ubah informasi koneksi pengambilan sampel

SELECT set_server_connstr(
   'server',
   'dbname=server channel_name=localhost user=<privileged_account_of_the_profile_database> password=<password_for_the_account>'
);

Tabel berikut menjelaskan parameter-parameternya.

Parameter

Contoh

Deskripsi

server

server

Nama koneksi. Jangan ubah nilai ini.

dbname

server

Nama database.

channel_name

localhost

Informasi koneksi. Nilai ini tetap `localhost`.

user

test_user

Akun istimewa untuk kluster tempat database server berada.

password

T123456!

Kata sandi untuk akun tersebut.

Lakukan pengumpulan data awal

SELECT take_sample();

Contoh berikut menunjukkan keluarannya:

      take_sample
-------------------------
 (server,OK,00:00:02.81)
(1 row)

Kumpulkan data lagi setelah melakukan uji stres pada database yang diambil sampelnya

Gunakan alat pgbench untuk menjalankan uji stres pada database server yang diambil sampelnya:

pgbench -s 100 -i server -U test_user -h pc-****.pg.rds.aliyuncs.com -p 5432

Tabel berikut menjelaskan parameter-parameternya.

Parameter

Contoh

Deskripsi

-s

100

`100` menunjukkan bahwa 10.000.000 baris dibuat di tabel `pgbench_accounts`.

-i

server

Database yang akan diuji.

-U

test_user

Akun istimewa untuk kluster tempat database server berada.

-h

pc-****.pg.rds.aliyuncs.com

Endpoint kluster tempat database server berada.

-p

5432

Port kluster. Tentukan nomor port yang ditampilkan di console.

Sambungkan ke database profil dan kumpulkan data lagi:

SELECT take_sample();

Lihat data yang dikumpulkan:

SELECT * FROM show_samples('server');

Contoh berikut menunjukkan keluarannya:

sample |      sample_time       | sizes_collected | dbstats_reset | bgwrstats_reset | archstats_reset
--------+------------------------+-----------------+---------------+-----------------+-----------------
      1 | 2024-02-23 07:29:53+00 | t               |               |                 |
      2 | 2024-02-23 08:11:39+00 | t               |               |                 |

Hasilkan laporan dari hasil yang dikumpulkan

Anda dapat mengekspor data yang dikumpulkan ke file lokal menggunakan salah satu dari dua metode berikut.

  • Metode 1: Jalankan pernyataan SQL berikut di command line interaktif tool client psql untuk menghasilkan file output.

    \o report_1_2.html
    SELECT get_report('server',1,2);
  • Metode 2: Gunakan command line untuk menginstruksikan psql agar menulis data langsung ke file.

    psql -Aqtc "SELECT get_report('server',1,2)" \
       -o report_server_1_2.html -d profile \
       -h <endpoint_of_the_profile_database_cluster> \
       -p <port_of_the_database_cluster> \
       -U <privileged_account_for_the_profile_database_cluster>