Menjelaskan pengelogan write-ahead

Selesai

Ketika perubahan dilakukan dalam database, seperti INSERTS atau DELETES, perubahan tersebut pertama kali ditulis ke log, dan hanya ditulis ke file data pada disk. Operasi ini disebut log write-ahead, karena perubahan ditulis ke log, sebelum menerapkannya ke file data. Jika terjadi masalah, seperti kehilangan daya, log selalu menyimpan data terbaru dan dapat digunakan untuk memastikan database dalam status konsisten.

Keuntungan kedua adalah bahwa dengan menulis perubahan pada log terlebih dahulu, perubahan ke tabel dan indeks dapat ditulis dalam batch, bukan secara individual. Proses ini mengurangi jumlah penulisan disk yang diperlukan untuk menjaga tabel dan indeks tetap terbaru. Penulisan ke log memerlukan waktu singkat karena dilakukan secara berurutan. Penulisan yang lebih lambat ke tabel dan indeks dapat dengan aman dilakukan dalam batch, karena semua data dapat dipulihkan dari log. Untuk beban kerja yang biasanya melibatkan banyak pembaruan kecil, performa ditingkatkan.

Catatan

Untuk implementasi PostgreSQL lokal, file log disimpan di direktori pg_wal. Azure Database for PostgreSQL tidak menyediakan akses ke sistem file, jadi Anda tidak perlu khawatir tentang penyimpanan fisik file log.

Ada beberapa parameter server yang memungkinkan Anda mengontrol cara kerja pengelogan write-ahead dan mengoptimalkannya untuk beban kerja Anda:

  • commit_delay - penundaan antara penerapan transaksi dan pembersihan log ke disk.
  • wal_buffers - jumlah buffer halaman disk dalam memori bersama untuk pengelogan write-ahead (WAL).
  • max_wal_size - ukuran maksimum pertumbuhan WAL sebelum memicu titik pemeriksaan otomatis.
  • wal_writer_delay - interval waktu antara pembersihan WAL yang dilakukan oleh penulis WAL.
  • wal_compression - apakah penulisan halaman penuh di file WAL akan dikompresi.
  • wal_level - menentukan seberapa banyak informasi yang ditulis ke WAL. Nilai yang diizinkan adalah REPLICA atau LOGICAL.

Pemulihan Titik Waktu Tertentu

Tujuan utama dari log write-ahead (WAL) adalah untuk memastikan konsistensi dan durabilitas database jika terjadi crash. Versi PostgreSQL lokal memungkinkan log digunakan sebagai arsip, sehingga Anda dapat melakukan pemulihan ke suatu titik waktu menggunakan pengaturan konfigurasi archive_mode dan archive_command.

Azure Database for PostgreSQL adalah layanan terkelola, yang tidak mengizinkan akses ke sistem file yang mendasar. Namun, layan ini mencakup pencadangan penuh otomatis server yang mencakup semua database. Pencadangan ini memungkinkan Anda membuat ulang data Anda ke titik waktu tertentu. Pencadangan dijadwalkan secara otomatis dan dilakukan sehari sekali. Jika perlu memulihkan, Anda dapat memulihkan hingga jumlah hari yang Anda tentukan untuk mempertahankan cadangan, hingga maksimum 35 hari. Untuk menentukan berapa lama cadangan akan dipertahankan:

  1. Di portal Azure, navigasikan ke server fleksibel Azure Database for PostgreSQL Anda.
  2. Dari bagian Gambaran Umum, pilih Konfigurasi Anda.
  3. Di Cadangan, temukan Periode retensi cadangan (dalam hari). Bilah penggeser memungkinkan Anda memilih jumlah hari cadangan akan dipertahankan sesuai keinginan Anda.
  4. Pilih Simpan untuk menyimpan perubahan Anda.