全部产品
Search
文档中心

PolarDB:Pemisahan Baca/Tulis

更新时间:Jul 03, 2025

PolarDB for PostgreSQL (Kompatibel dengan Oracle) mengaktifkan fitur pemisahan baca/tulis. Fitur ini mendistribusikan permintaan baca dan tulis dari aplikasi menggunakan titik akhir kluster. Proksi bawaan PolarDB meneruskan permintaan tulis ke node utama dan permintaan baca ke node utama atau node hanya-baca, tergantung pada beban setiap node.

Manfaat

  • Pemeliharaan mudah berdasarkan titik akhir terpadu

    Jika Anda tidak menggunakan titik akhir kluster yang mode baca/tulisnya adalah Baca dan Tulis (Pemisahan Baca/Tulis Otomatis), Anda harus mengonfigurasi titik akhir node utama dan setiap node hanya-baca di aplikasi Anda. Jika tidak, Anda tidak dapat mengirim permintaan tulis ke node utama dan permintaan baca ke node hanya-baca. Dengan menghubungkan aplikasi Anda ke titik akhir kluster yang mode baca/tulisnya adalah Baca dan Tulis (Pemisahan Baca/Tulis Otomatis), titik akhir kluster secara otomatis meneruskan permintaan baca dan tulis ke node yang relevan. Ini mengurangi biaya pemeliharaan. Anda hanya perlu menambahkan node hanya-baca untuk meningkatkan kemampuan pemrosesan kluster tanpa memodifikasi aplikasi Anda.

  • Konsistensi baca tingkat sesi

    Saat klien terhubung ke backend menggunakan titik akhir kluster, proksi bawaan untuk pemisahan baca/tulis secara otomatis membuat koneksi ke node utama dan setiap node hanya-baca. Dalam sesi yang sama, proksi pertama kali memilih node yang sesuai berdasarkan kemajuan sinkronisasi data setiap node database. Kemudian, proksi meneruskan permintaan baca dan tulis ke node yang datanya paling mutakhir. Ini menyeimbangkan permintaan baca dan tulis di antara node.

  • Distribusi merata dari pernyataan PREPARE

    Pernyataan PREPARE yang berisi operasi tulis dan pernyataan EXECUTE terkait dikirim hanya ke node utama. Pernyataan PREPARE yang berisi operasi hanya-baca disiarkan ke semua node, dan pernyataan EXECUTE terkait dirutekan berdasarkan beban pada node-node tersebut. Ini mencapai keseimbangan beban untuk permintaan kueri.

  • Dukungan untuk tautan keamanan tinggi asli, dan peningkatan kinerja

    Anda dapat membangun proksi sendiri di cloud untuk mencapai pemisahan baca/tulis. Namun, latensi berlebihan mungkin terjadi karena data dianalisis dan diteruskan oleh beberapa komponen sebelum sampai di database. Sebaliknya, PolarDB menggunakan proksi bawaan yang berfungsi sebagai komponen kluster untuk pemisahan baca/tulis. Proksi bawaan memberikan latensi lebih rendah dan kecepatan pemrosesan data lebih tinggi dibandingkan dengan komponen eksternal.

  • Pemeriksaan kesehatan node untuk meningkatkan ketersediaan database

    Modul pemisahan baca/tulis PolarDB melakukan pemeriksaan kesehatan pada node utama dan node hanya-baca kluster. Jika sebuah node gagal atau latensinya melebihi ambang batas tertentu, PolarDB menghentikan distribusi permintaan baca ke node tersebut, dan mendistribusikan permintaan tulis dan baca ke node lain yang sehat. Ini memastikan bahwa aplikasi dapat mengakses kluster meskipun satu node hanya-baca gagal. Setelah node pulih, PolarDB secara otomatis menambahkan node ke dalam daftar node yang tersedia untuk menerima permintaan.

Batasan

  • PolarDB tidak mendukung pernyataan atau fitur berikut:

    • Hubungkan ke kluster melalui metode replication-mode. Jika Anda perlu menyiapkan kluster dua node berdasarkan arsitektur replikasi utama/sekunder, gunakan titik akhir node utama.

    • Gunakan nama tabel sementara untuk mendeklarasikan atribut %ROWTYPE.

      create temp table fullname (first text, last text);
      select '(Joe,von Blow)'::fullname, '(Joe,d''Blow)'::fullname;
    • Buat sumber daya sementara menggunakan fungsi.

      • Jika Anda membuat tabel sementara menggunakan fungsi dan menjalankan pernyataan SQL untuk menanyakan tabel sementara, pesan kesalahan mungkin dikembalikan. Pesan kesalahan menunjukkan bahwa tabel tidak ada.

      • Jika fungsi Anda berisi pernyataan PREPARE, pesan kesalahan mungkin dikembalikan saat Anda menjalankan pernyataan EXECUTE. Pesan kesalahan menunjukkan bahwa nama pernyataan PREPARE tidak ada.

  • Pembatasan terkait routing:

    • Permintaan dalam transaksi dirutekan ke node utama, dan keseimbangan beban dilanjutkan setelah transaksi dihentikan.

    • Semua fungsi yang melibatkan operasi tulis atau operasi baca-tulis campuran dirutekan ke node utama. Semua fungsi hanya-baca, termasuk fungsi hanya-baca yang disesuaikan, dirutekan ke node hanya-baca.

Buat atau modifikasi titik akhir kluster

  • Untuk informasi lebih lanjut tentang cara membuat titik akhir kluster kustom, lihat Konfigurasi PolarProxy.
  • Untuk informasi lebih lanjut tentang cara memodifikasi titik akhir kluster, lihat FAQ.

Konfigurasikan pemisahan transaksi (pengaturan lanjutan)

Untuk informasi lebih lanjut, lihat Pemisahan transaksi.

Tentukan tingkat konsistensi (pengaturan lanjutan)

Untuk informasi lebih lanjut, lihat Tingkat konsistensi.

FAQ

  • Mengapa saya tidak dapat segera mengambil catatan setelah saya menyisipkan catatan?

    Ini karena dalam arsitektur pemisahan baca/tulis, penundaan replikasi mungkin terjadi selama replikasi data antara node utama dan node hanya-baca. Namun, PolarDB mendukung konsistensi sesi. Ini memungkinkan Anda untuk menanyakan pembaruan dalam sesi.

  • Mengapa node hanya-baca tidak memiliki beban?

    Secara default, semua permintaan dalam transaksi dikirim ke node utama. Jika Anda menggunakan sysbench untuk uji stres, Anda dapat menggunakan --oltp-skip-trx=on di sysbench 0.5 atau menggunakan --skip-trx=on di sysbench 1.0 untuk melewati transaksi. Jika beban pada node hanya-baca terlalu rendah karena banyaknya transaksi dalam bisnis Anda, Anda dapat mengaktifkan fitur pemisahan transaksi di konsol. Untuk informasi lebih lanjut, lihat Konfigurasikan pemisahan transaksi (pengaturan lanjutan).

  • Mengapa sebuah node menerima lebih banyak permintaan daripada node lain?

    Permintaan didistribusikan ke setiap node berdasarkan beban. Node yang memiliki beban rendah menerima lebih banyak permintaan.

  • Apakah PolarDB mendukung akses baca tanpa penundaan ke data?

    Tidak, PolarDB tidak mendukung akses baca tanpa penundaan ke data. Saat node utama dan node hanya-baca memproses beban normal, penundaan beberapa milidetik terjadi. Jika mode baca/tulis titik akhir kluster adalah Baca dan Tulis (Pemisahan Baca/Tulis Otomatis), data tidak dapat dibaca tanpa penundaan setelah data ditulis. Jika Anda memerlukan akses baca tanpa penundaan ke data, hubungkan aplikasi Anda ke titik akhir utama untuk mengirim semua permintaan baca dan tulis ke node utama. Titik akhir utama selalu terhubung ke node utama PolarDB Anda.

  • Apakah node hanya-baca baru secara otomatis tersedia untuk menerima permintaan baca untuk pemisahan baca/tulis?

    Jika sesi yang mendukung pemisahan baca/tulis dibuat setelah Anda menambahkan node hanya-baca, permintaan baca diteruskan ke node hanya-baca. Jika sesi yang mendukung pemisahan baca/tulis dibuat sebelum Anda menambahkan node hanya-baca, permintaan baca tidak diteruskan ke node hanya-baca. Untuk memastikan bahwa permintaan baca diteruskan ke node hanya-baca, tutup sesi dan buat sesi lagi. Misalnya, Anda dapat memulai ulang aplikasi Anda untuk membuat sesi.