Saat menggunakan cluster endpoint dalam mode baca/tulis, beberapa driver klien database—seperti Java Database Connectivity (JDBC)—secara otomatis membungkus setiap permintaan dalam sebuah transaksi. Akibatnya, seluruh lalu lintas, termasuk kueri read-only, dialihkan ke node primary. Node read-only menjadi tidak terpakai, sementara node primary menanggung beban yang seharusnya dapat dikurangi tanpa perlu modifikasi kode tambahan.
Fitur pemisahan transaksi memungkinkan PolarProxy mengarahkan permintaan baca dalam suatu transaksi ke node read-only, sehingga mendistribusikan ulang beban tanpa mengubah kode aplikasi Anda. Fitur ini juga membantu menjaga konsistensi baca/tulis.
Cara kerja
Secara default, saat menggunakan cluster endpoint dalam mode baca/tulis, PolarProxy mengirim semua permintaan dalam satu sesi ke node primary. Karena driver seperti JDBC membungkus semua permintaan dalam transaksi, bahkan kueri read-only tetap diarahkan ke node primary, terlepas dari apakah kueri tersebut melibatkan operasi tulis atau tidak.

Dengan pemisahan transaksi dasar diaktifkan, PolarProxy memisahkan operasi baca dan tulis dalam setiap transaksi:
Permintaan baca yang diterima sebelum permintaan tulis pertama dalam suatu transaksi diteruskan ke node read-only.
Setelah permintaan tulis pertama tiba, semua permintaan berikutnya—baik baca maupun tulis—diteruskan ke node primary untuk menjaga konsistensi data.
Data yang belum dikomit tidak akan pernah terlihat dari node read-only.

Kapan menggunakan pemisahan transaksi
Pemisahan transaksi paling efektif ketika:
Aplikasi Anda menggunakan cluster endpoint dalam mode baca/tulis.
Beban kerja Anda didominasi oleh operasi baca.
Operasi baca secara otomatis dibungkus dalam transaksi oleh driver—misalnya, aplikasi JDBC dengan
autoCommit=false.
Pemisahan transaksi tidak memberikan manfaat jika aplikasi Anda sudah mengarahkan langsung permintaan baca ke endpoint read-only atau jika beban kerja Anda didominasi oleh operasi tulis.
Batasan
Tingkat isolasi: Hanya transaksi yang menggunakan tingkat isolasi Read Committed yang dapat dipisah. Tingkat isolasi lainnya (seperti Repeatable Read atau Serializable) mengharuskan sesi tetap terikat pada satu node tunggal untuk menjamin konsistensi berbasis snapshot stabil, sehingga pemisahan tidak dimungkinkan.
Interaksi tingkat konsistensi: Jika tingkat konsistensi tidak diatur ke eventual consistency, PolarProxy hanya mengirim permintaan baca sebelum tulis ke node read-only setelah node tersebut sepenuhnya menyinkronkan data dari node primary. Jika node tersebut tertinggal, PolarProxy akan mengalihkan permintaan baca ke node primary. Untuk detail selengkapnya, lihat .
Aktifkan pemisahan transaksi
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster PolarDB for PostgreSQL (Compatible with Oracle) dengan setidaknya satu node read-only
Cluster endpoint yang dikonfigurasi dalam mode baca/tulis
Prosedur
Masuk ke Konsol PolarDB.
Di pojok kiri atas, pilih wilayah tempat kluster Anda dideploy.
Temukan kluster tersebut dan klik ID-nya.
Pada bagian Cluster Endpoints, klik Modify.
Klik On di samping Transaction Splitting.
Pemisahan transaksi hanya berlaku untuk koneksi baru. Untuk menerapkan perubahan pada koneksi yang sudah ada, tutup koneksi tersebut dan buat koneksi baru.

Klik OK.
Referensi API
| Operation | Description |
|---|---|
| ModifyDBClusterEndpoint | Memodifikasi atribut cluster endpoint, termasuk mode baca/tulis, tingkat konsistensi, pemisahan transaksi, dan apakah akan melepas permintaan baca dari node primary. Anda juga dapat menentukan apakah cluster endpoint yang ditentukan akan dikaitkan dengan node yang baru ditambahkan. |