Konfigurasikan parameter server autovacuum

Selesai

Proses vakum dikonfigurasi menggunakan parameter server autovacuum yang memungkinkan Anda mengoptimalkan proses vakum untuk beban kerja Anda. Di portal Azure, pilih server Azure Database for PostgreSQL Anda, dan pilih Parameter Server dari menu sebelah kiri. Di bilah penelusuran, masukkan autovacuum. Atau, kita dapat menggunakan SQL untuk mengkueri tampilan katalog sistem untuk menemukan konfigurasi autovacuum saat ini dengan menggunakan kueri berikut.

SELECT *
FROM pg_settings 
WHERE "name" LIKE '%autovacuum%';
Nama Parameter Default Deskripsi
autovacuum AKTIF Mengaktifkan atau menonaktifkan proses server autovacuum. Autovacuum harus selalu diaktifkan.
autovacuum_analyze_scale_factor 0.1 Menentukan pecahan tabel untuk ditambahkan ke autovacuum_vacuum_threshold memutuskan apakah akan memicu operasi vakum. Misalnya, 0,2 adalah 20 persen dari ukuran tabel.
autovacuum_analyze_threshold 50 Jumlah baris yang disisipkan, diperbarui, atau dihapus yang diperlukan untuk memicu proses analisis untuk satu tabel.
autovacuum_freeze_max_age 200000000 Usia maksimum (dalam transaksi) sebelum memicu autovacuum pada tabel untuk mencegah wraparound ID transaksi.
autovacuum_max_workers 3 Jumlah maksimum proses autovacuum yang berjalan pada satu waktu, selain peluncur autovacuum.
autovacuum_multixact_freeze_max_age 400000000 Usia maksimum (dalam multiksak) sebelum memicu autovacuum pada tabel untuk mencegah wraparound multiksak.
autovacuum_naptime 60 detik Penundaan antara proses autovacuum pada database. Dalam setiap putaran, daemon memeriksa database dan mengeluarkan perintah VACUUM dan ANALYZE sesuai kebutuhan untuk tabel dalam database tersebut.
autovacuum_vacuum_cost_limit -1 Biaya maksimum untuk operasi vakum otomatis. Jika -1 ditentukan, yang merupakan default, nilai vacuum_cost_limit reguler digunakan. Dengan lebih dari satu pekerja, nilai didistribusikan secara proporsional di antara pekerja autovacuum yang sedang berjalan. Jumlah untuk setiap pekerja tidak boleh melebihi nilai variabel ini.
autovacuum_vacuum_insert_threshold 1000 Jumlah baris yang disisipkan yang memicu vakum untuk satu tabel.
autovacuum_vacuum_scale_factor 0,2 Digunakan dengan autovacuum_vacuum_threshold. Pecahan tabel yang digunakan untuk memutuskan apakah akan memicu vakum.
autovacuum_vacuum_threshold 50 Jumlah minimum baris yang diperbarui, disisipkan, atau dihapus untuk memicu vakum untuk tabel.
autovacuum_vacuum_insert_scale_factor 0,2 Menentukan pecahan ukuran tabel untuk ditambahkan ke autovacuum_vacuum_insert_threshold untuk memicu proses vakum.
autovacuum_work_mem -1 KB Memori maksimum yang dapat digunakan oleh setiap proses autovacuum.
log_autovacuum_min_duration -1 Waktu dalam milidetik, dicatat oleh tindakan autovacuum.

Proses vakum tidak boleh dijalankan terlalu sering, atau terlalu jarang. Frekuensi optimal tergantung pada beban kerja. Uji setiap parameter autovacuum untuk menemukan yang terbaik untuk beban kerja Anda. Biaya proses vakum meliputi:

  • Halaman data dikunci saat vakum berjalan.
  • Proses vakum menghabiskan waktu komputasi dan memori.

Mengoptimalkan vakum pada tingkat tabel

Dalam Azure Database for PostgreSQL, parameter autovacuum dapat diatur pada tingkat tabel. Ketika beberapa tabel diperbarui lebih dari yang lain, tabel dapat meningkatkan performa. Contoh pengaturan autovacuum di tingkat tabel:

ALTER TABLE mytable SET (autovacuum_vacuum_threshold = 1000);
​ALTER TABLE mytable SET (autovacuum_vacuum_scale_factor = 0.1);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_limit = 1000);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_delay = 10);

Pada tingkat tabel, autovacuum adalah proses sinkron. Semakin besar persentase tuple mati yang dimiliki tabel, semakin besar "biaya" yang dikeluarkan oleh proses autovacuum.

Untuk tabel dengan tingkat pembaruan yang tinggi, pertimbangkan untuk memisahkan tabel menjadi beberapa tabel. Pemisahan ini membantu paralelisasi autovacuum dan mengurangi "biaya" untuk satu tabel. Anda juga dapat meningkatkan jumlah pekerja autovacuum paralel.