İşlem bölme, otomatik olarak onaylanmayan işlemler içindeki okuma isteklerini uygulama kodunda değişiklik yapmadan birincil örnekten salt okunur örneklere yönlendirir. Otomatik onay (autocommit) devre dışı bırakıldığında tüm sorgular işlemler içinde çalıştırılıyorsa, okuma işlemleri yazma erişimi gerektirmese bile birincil örnek her isteği işler. İşlem bölme, herhangi bir yazma işlemi başlamadan önce bu okuma isteklerini salt okunur örneklere yönlendirerek birincil örnek üzerindeki yükü azaltır ve kararlılığını artırır.
Ön koşullar
Başlamadan önce aşağıdakileri yaptığınızdan emin olun:
ApsaraDB RDS for PostgreSQL örneğinizde veritabanı proxy özelliğini etkinleştirin. Bkz. Enable the database proxy feature
Nasıl çalışır?
Varsayılan olarak, veritabanı proxy'si okuma/yazma tutarlılığını korumak amacıyla bir işlem içindeki tüm istekleri birincil örneğe gönderir. Bu durum yazma işlemleri için gerekli olsa da, herhangi bir yazma işleminden önce gelen okuma istekleri de salt okunur örnekler tarafından güvenle karşılanabilse dahi birincil örneğe iletilir.
İşlem bölme, aşağıdaki iki koşul sağlandığında bu davranışı değiştirir:
İşlem yalıtım düzeyi READ COMMITTED'dir (PostgreSQL varsayılanı).
Otomatik onay devre dışıdır (
autocommit = off).
Bu koşullar altında proxy, ilk yazma işlemine kadar birincil örnekte işlem açmayı geciktirir. Yazma işleminden önce yapılan tüm okuma istekleri yük dengeleyici aracılığıyla salt okunur örneklere yönlendirilir.
Veritabanı proxy'sini etkinleştirdiğinizde işlem bölme otomatik olarak etkinleşir. Bu özellik devre dışı bırakılamaz.
Sınırlamalar
Tüm işlemler bölünemez. Veritabanı proxy'sini etkinleştirmeden önce işlem bölmenin iş yükleriniz için uygun olduğundan emin olun.
| Kısıtlama | Ayrıntı |
|---|---|
| Açık işlemler | BEGIN veya START TRANSACTION ile başlatılan işlemler asla bölünmez. Açık bir işlemdeki tüm istekler birincil örneğe gider. |
| Genel tutarlılık | İşlem bölme, istekler arasında genel tutarlılığı garanti edemez. Veritabanı proxy'sini etkinleştirmeden önce bu ödünleşimi değerlendirin. |
| Devre dışı bırakılamaz | Veritabanı proxy'si etkinleştirildikten sonra işlem bölme her zaman etkindir. Bu özelliği bağımsız olarak kapatma seçeneği yoktur. |
İşlem bölme ne zaman kullanılır?
İşlem bölme, uygulamanız açık BEGIN veya START TRANSACTION deyimleri kullanmadan, yoğun okuma içeren sorguları otomatik olarak onaylanmayan işlemler içinde sardığında en iyi şekilde çalışır.
| Senaryo | Uygun mu? |
|---|---|
| Otomatik onayın devre dışı olduğu, yazmalardan önce çoğunlukla okuma içeren uygulamalar | Evet |
BEGIN veya START TRANSACTION kullanan açık işlemler |
Hayır — okumalar birincil örnekte kalır |
| Tüm okumalar arasında sıkı genel tutarlılık gerektiren iş yükleri | Hayır — genel tutarlılık sağlanamaz |
API referansı
| İşlem | Açıklama |
|---|---|
| DescribeDBProxy | Bir veritabanı proxy'sinin ayrıntılarını sorgular |
| DescribeDBProxyEndpoint | Bir veritabanı proxy uç noktası hakkında bilgi sorgular |