sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur bearbetar man distribuerad transaktion inom postgresql?

Det verkar som att du är lite förvirrad. Databassystem stöder i allmänhet två begrepp om distribuerade transaktionstyper:

  • Inbyggda distribuerade transaktioner och
  • XA-transaktioner.

Native distribuerade transaktioner sker vanligtvis mellan olika servrar för samma RDBMS. Postgres stöder även detta med kommandot dblink_exec. Vanligtvis skapas anslutningen till den andra servern av en så kallad databaslänk. Postgres är lite mer klumpig att använda än några andra kommersiella RDBMS. Du måste först installera ett tillägg för att kunna använda databaslänkar. Men postgres rdbms hanterar transaktionen.

XA-transaktioner å andra sidan hanteras av den externa transaktionshanteraren (TM) och var och en av de deltagande databaserna har rollen som en XA-resurs, som värvas med transaktionshanteraren. RDBMS kan inte längre själv bestämma när en transaktion ska genomföras. Detta är XA-transaktionshanterarens uppgift. Han använder ett 2PC-protokoll för att se till att ändringarna tillämpas eller återställs på ett konsekvent sätt över databaserna.

På vissa operativsystem som Windows är en transaktionshanterare en del av operativsystemet på andra inte. Generellt levereras java med en transaktionshanterare och motsvarande datakälla måste konfigureras för att använda XA.




  1. Välj påstående från flera tabeller, med variabel inmatning

  2. Kan inte starta Mysql på Mac

  3. Bufferten för litet fel när du använder XMLAgg/XMLElement

  4. Det går inte att anropa en Oracle-lagrad procedur från SSRS-rapportbyggaren 3.0