PREPARE TRANSACTION

Name

PREPARE TRANSACTION -- 2»óÀÇ Ä¿¹ÔÀ¸·Î ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)¸¦ ÁغñÇÑ´Ù

Synopsis

PREPARE TRANSACTION 
transaction_id

¼³¸í

PREPARE TRANSACTION´Â 2»ó Ä¿¹ÔÀ¸·Î ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)¸¦ ÁغñÇÕ´Ï´Ù. ÀÌ ¸í·ÉÀÇ µÚ Æ®·£Àè¼Ç(transaction)´Â ÇöÀçÀÇ ¼¼¼Ç°ú °ü·ÃÇÏÁö ¾Ê°Ô µË´Ï´Ù. Æ®·£Àè¼Ç(transaction) »óÅ´ ¿ÏÀüÇÏ°Ô µð½ºÅ©»ó¿¡ º¸Á¸µÇ¾î Ä¿¹Ô ¿ä±¸Àü¿¡ µ¥ÀÌÅͺ£À̽º°¡ Å©·¡½¬ ÇØ ¹ö·È´Ù°í ÇØµµ, °ÅÀÇ È®½ÇÈ÷ Á¤»óÀûÀ¸·Î Ä¿¹ÔÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

ÁغñµÈ ÈÄ, ±× Æ®·£Àè¼Ç(transaction)¸¦ COMMIT PREPARED À̳ª ROLLBACK PREPARED ¿¡ ÀÇÇØ Ä¿¹Ô ¶Ç´Â ·Ñ¹é(rollback) ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¿ø·¡ÀÇ Æ®·£Àè¼Ç(transaction)¸¦ ½ÇÇàÇÑ ¼¼¼Ç ¸¸ÀÌ ¾Æ´Ï°í, ¾î´À ¼¼¼Ç·ÎºÎÅÍ ÀÌ·¯ÇÑ ¸í·ÉÀ» ¹ßÇàÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

¸í·ÉÀ» ¹ßÇàÇÑ ¼¼¼ÇÀ¸·ÎºÎÅÍ º¸¸é PREPARE TRANSACTION´Â ROLLBACK¸í·É¿Í ´Ù¸¥ °ÅÀÌ ¾Æ´Õ´Ï´Ù. ±×°ÍÀ» ½ÇÇàÇÑ ÈÄ, ½ÇÇàÁßÀÇ ÇöÀçÀÇ ½ÇÇàµÇ´Â Æ®·£Àè¼Ç(transaction)´Â ¾ø¾îÁö°í ÁغñÇÑ Æ®·£Àè¼Ç(transaction)ÀÇ È¿°ú´Â ´õÀÌ»ó °¡½ÃÈ­ µÇÁö ¾Ê½À´Ï´Ù. (±× Æ®·£Àè¼Ç(transaction)°¡ Ä¿¹ÔµÇ¾úÀ» °æ¿ì¿¡ È¿°ú°¡ °¡½Ã°¡ µË´Ï´Ù. )

¾î¶°ÇÑ ¿øÀÎÀ¸·ÎPREPARE TRANSACTION¸í·ÉÀÌ ½ÇÆÐÇßÀ» °æ¿ì,ROLLBACK¸¦ ÇÕ´Ï´Ù. Áï, ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)°¡ »èÁ¦µË´Ï´Ù.

¸Å°³º¯¼ö

transaction_id

´ÙÀ½¿¡ COMMIT PREPARED³ª ROLLBACK PREPARED·Î Æ®·£Àè¼Ç(transaction)¸¦½Äº°Çϱâ À§ÇÑ ÀÓÀÇÀÇ ½Äº°ÀÚÀÔ´Ï´Ù. ÀÌ ½Äº°Àڴ ij¸¯ÅÍ ¶óÀÎ ¸®ÅÍ·²(string litera)·Î ¾²¿©Á®¾ß ÇÕ´Ï´Ù. ¶Ç, 200¹ÙÀÌÆ® ¹Ì¸¸ÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. ¶Ç, ±× ½ÃÁ¡¿¡¼­ ÁغñµÈ Æ®·£Àè¼Ç(transaction)·Î¼­ »ç¿ëµÇ°í ÀÖ´Â ´Ù¸¥ ½Äº°ÀÚ¿Í °°Àº °ÍÀº »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

ÁÖ¼®

ÀÌ ¸í·ÉÀº Æ®·£Àè¼Ç(transaction) ºí·Ï³»¿¡¼­ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. Æ®·£Àè¼Ç(transaction) ºí·ÏÀ» ½ÃÀÛÇÏ·Á¸é, BEGIN ¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.

Çö½ÃÁ¡¿¡¼­´Â ÀϽà Å×À̺íÀ» Æ÷ÇÔÇÑ Á¶ÀÛÀ» ½Ç½ÃÇÏ´Â Æ®·£Àè¼Ç(transaction)³ª Ä¿¼­¸¦ WITH HOLD·Î ÀÛ¼ºÇÏ´Â Æ®·£Àè¼Ç(transaction), LISTEN ¶Ç´Â UNLISTEN¸¦ ½ÇÇàÇÏ´Â Æ®·£Àè¼Ç(transaction)¸¦ PREPARE½Ãų ¼ö ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ ±â´ÉÀº ÁغñÇÑ Æ®·£Àè¼Ç(transaction)·Î Æí¸®ÇÏ°Ô À¯¿ëÇÏ°Ô »ç¿ëµÇ·Á´Â ÇöÀçÀÇ ¼¼¼Ç¿¡ ³Ê¹«³ª °­ÇÏ°Ô °áÇյǰí Àֱ⠶§¹®ÀÔ´Ï´Ù.

Æ®·£Àè¼Ç(transaction)·Î ¾î¶°ÇÑ ½ÇÇà½Ã ¸Å°³º¯¼ö°¡ SET·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì, ±× ¿µÇâÀº PREPARE TRANSACTIONÀÇ µÚµµ ³²½À´Ï´Ù. ¶Ç,COMMIT PREPARED³ª ROLLBACK PREPAREDÀÇ ´ÙÀ½¿¡´Â ±× ¿µÇâÀº ¾ø½À´Ï´Ù. µû¶ó¼­ ÀÌ Àǹ̿¡¼­´Â PREPARE TRANSACTION´Â ROLLBACKº¸´Ù COMMIT¿Í ´àÀº ¿òÁ÷ÀÓÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.

±× ½ÃÁ¡¿¡¼­ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç ÁغñµÈ Æ®·£Àè¼Ç(transaction)Àº pg_prepared_xacts ½Ã½ºÅÛºä·Î ¿­°ÅµË´Ï´Ù.

¼º´ÉÀ̶ó°í ÇÏ´Â Á¡¿¡¼­´Â Æ®·£Àè¼Ç(transaction)¸¦ Àå½Ã°£ Áغñ ´Ü°è ·Î À¯ÁöÇÏ´Â °ÍÀº Ãßõ ÇÒ ¼ö ¾ø½À´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î´Â À̰ÍÀº VACUUM·Î °³¼± ´Ü°èÀÇ °¡´É¼ºÀ» ¹æÇØÇÒ °ÍÀÔ´Ï´Ù. ¶Ç, Æ®·£Àè¼Ç(transaction)°¡ º¸°ü À¯ÁöÇϰí ÀÖ´Â ¾î¶°ÇÑ ¶ôÀ» °è¼Ó º¸°ü À¯ÁöÇÏ´Â Àϵµ °í·ÁÇØ ÁÖ¼¼¿ä. ÁغñµÈ Æ®·£Àè¼Ç(transaction)´Â Åë»ó ´Ù¸¥ Æ®·£Àè¼Ç(transaction) ¸Å´ÏÀú°¡ ´Ù¸¥ µ¥ÀÌÅͺ£À̽º·Î Ä¿¹ÔÀÇ Áغñ¸¦ ÇÒ ¼ö ÀÖ´ø °ÍÀ» È®ÀÎÇÏÀÚ ¸¶ÀÚ Ä¿¹Ô ¶Ç´Â ·Ñ¹é(rollback) µÈ´Ù°í ÇÏ´Â »ç¿ë ¹æ¹ýÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù.

ÁغñµÈ Æ®·£Àè¼Ç(transaction)¸¦ º»°ÝÀûÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì, (»ç¿ëÇÏÁö ¾Ê´Â »ç¶÷¿¡°Ô À־ÀÇ ¾µµ¥¾ø´Â ÀÚ¿ø ¼Òºñ¸¦ ¸·±â À§Çؼ­) µðÆúÆ®ÀÇ ¼³Á¤¿¡¼­´Â ³Ê¹« À۱⠶§¹®¿¡ ¾Æ¸¶µµ max_prepared_transactionsÀÇ °ªÀ» ´Ã¸®´Â °ÍÀ» ¿øÇÒ °ÍÀÔ´Ï´Ù. Àû¾îµµ, ¸ðµç ¼¼¼ÇÀÌ ÁغñµÈ Æ®·£Àè¼Ç(transaction)¸¦ ´ë±âÇÒ ¼ö ÀÖµµ·Ï max_connections¶ó°í µ¿Ä¡·Î ÇÏ´Â °ÍÀ» ±ÇÇÕ´Ï´Ù. ±×·¡¼­ ¸Å ¼¼¼ÇÀº ÁغñµÈ Æ®·£Àè¼Ç(transaction) ¹Ì°áÁ¤ »óÅ¿¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.

¿¹Á¦

2»ó Ä¿¹ÔÀ¸·Î ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)¸¦ ÁغñÇÕ´Ï´Ù. Æ®·£Àè¼Ç(transaction) ½Äº°Àڷμ­foobar¸¦ »ç¿ëÇÕ´Ï´Ù. foobar as the transaction identifier:

PREPARE TRANSACTION 'foobar';

°ü·Ã Ç׸ñ

COMMIT PREPARED , ROLLBACK PREPARED