All Products
Search
Document Center

ApsaraDB RDS:Pemisahan transaksi

Last Updated:Mar 28, 2026

Pemisahan transaksi mengalihkan permintaan baca dalam transaksi tanpa auto-commit dari instans primary ke instans hanya baca—tanpa perubahan pada kode aplikasi. Saat semua kueri dijalankan dalam transaksi dengan autocommit dinonaktifkan, instans primary menangani seluruh permintaan, meskipun operasi baca tidak memerlukan akses tulis. Pemisahan transaksi mengarahkan operasi baca tersebut ke instans hanya baca sebelum operasi tulis pertama dimulai, sehingga mengurangi beban pada instans primary dan meningkatkan stabilitasnya.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Cara kerja

Secara default, database proxy mengirimkan semua permintaan dalam transaksi ke instans primary untuk menjaga konsistensi baca/tulis. Hal ini diperlukan untuk operasi tulis, tetapi permintaan baca yang dilakukan sebelum operasi tulis apa pun juga dikirim ke instans primary—meskipun instans hanya baca dapat melayaninya dengan aman.

Pemisahan transaksi mengubah perilaku ini jika kedua kondisi berikut terpenuhi:

  • Tingkat isolasi transaksi adalah READ COMMITTED (nilai default PostgreSQL).

  • Autocommit dinonaktifkan (autocommit = off).

Dalam kondisi tersebut, proksi menunda pembukaan transaksi pada instans primary hingga operasi tulis pertama dilakukan. Semua permintaan baca yang dikeluarkan sebelum operasi tulis tersebut diarahkan ke instans hanya baca melalui load balancer.

Pemisahan transaksi diaktifkan secara otomatis saat Anda mengaktifkan database proxy dan tidak dapat dinonaktifkan.

Batasan

Tidak semua transaksi dapat dipisah. Pastikan pemisahan transaksi sesuai dengan beban kerja Anda sebelum mengaktifkan database proxy.

BatasanDetail
Transaksi eksplisitTransaksi yang dimulai dengan BEGIN atau START TRANSACTION tidak pernah dipisah. Semua permintaan dalam transaksi eksplisit dialihkan ke instans primary.
Konsistensi globalPemisahan transaksi tidak dapat menjamin konsistensi global antarpermintaan. Evaluasi pertukaran ini sebelum mengaktifkan database proxy.
Tidak dapat dinonaktifkanSetelah database proxy diaktifkan, pemisahan transaksi selalu aktif. Tidak ada opsi untuk menonaktifkannya secara terpisah.

Kapan menggunakan pemisahan transaksi

Pemisahan transaksi paling efektif ketika aplikasi Anda membungkus kueri yang dominan baca dalam transaksi tanpa auto-commit dan tidak menggunakan pernyataan eksplisit BEGIN atau START TRANSACTION.

SkenarioCocok?
Aplikasi dengan autocommit dinonaktifkan, sebagian besar operasi baca sebelum tulisYa
Transaksi eksplisit menggunakan BEGIN atau START TRANSACTIONTidak—operasi baca tetap berada di instance utama
Beban kerja yang memerlukan konsistensi global ketat untuk semua operasi bacaTidak — konsistensi global tidak dapat dijamin

Referensi API

OperasiDeskripsi
DescribeDBProxyKueri detail proksi database
DescribeDBProxyEndpointKueri informasi tentang titik akhir proksi database