¢Ãµ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½Ã
-»ç¿ëÀÚ°¡ µ¥ÀÌÅ͸¦ ¿ä±¸Çϸé Server ÇÁ·Î¼¼½º´Â µ¥ÀÌÅͰ¡ ÀÌ¹Ì ÀÖ´ÂÁö¸¦ µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½Ã¿¡ °Ë»çÇÑ´Ù.
¢Ãµ¥ÀÌÅÍ ºí·Ï
-µ¥ÀÌÅͰ¡ ¹öÆÛ ij½Ã¿¡ ÀÖÁö ¾ÊÀ¸¸é ¼¹ö ÇÁ·Î¼¼½º´Â µ¥ÀÌÅÍ ÆÄÀÏ¿¡¼ ÀûÀýÇÑ ºí·ÏÀ» °¢°¢ ÇϳªÀÇ Oracle µ¥ÀÌÅÍ ºí·Ï Å©±â(DB_BLOCK_SIZE¿¡ Á¤ÀÇ)·Î µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½Ã·Î ÀÐ¾î µéÀδÙ.
-»ç¿ëÀÚ°¡ ¿ä±¸ÇÑ ºí·ÏÀ» ¼öÁ¤Çϸé ij½ÃÀÇ µ¥ÀÌÅÍ ºí·ÏÀÌ º¯°æµÈ´Ù. À̶§ º¯°æµÈ ºí·ÏÀ» ÀÌÈÄ À̹ÌÁö(after image)¶ó°í ÇÑ´Ù.
¢Ã·Ñ¹é ºí·Ï
-OracleÀº ·Ñ¹é ºí·Ï¿¡ µ¥ÀÌÅÍÀÇ ¿øº» ¹öÀüÀ» ÀúÀåÇÑ´Ù. ÀÌ ºí·ÏÀº »ç¿ëÀÚ°¡ ¼öÁ¤Çϱâ ÀÌÀüÀÇ µ¥ÀÌÅÍÀ̹ǷΠÀÌÀü À̹ÌÁö(before image)¶ó°í ÇÑ´Ù.
-º¯°æµÈ »çÇ×À» µ¥ÀÌÅͺ£À̽º¿¡ Commit Çϱâ Àü¿¡ Rollback ÇÏ¸é ·Ñ¹é ºí·ÏÀÇ Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© Æ®·£Àè¼ÇÀ» ·Ñ¹é ÇÑ´Ù.
¢ÃRedo log ¹öÆÛ
-Æ®·£Àè¼ÇÀ» ó¸®ÇÏ´Â µ¿¾È ¼¹ö ÇÁ·Î¼¼½º´Â Redo Log ¹öÆÛ¿¡ ÀÌÀü À̹ÌÁö¿Í ÀÌÈÄ À̹ÌÁö Á¤º¸¸¦ ±â·ÏÇÑ´Ù.
-Redo log ±â·ÏÀº ÆÄÀÏ, ºí·Ï, Çà, ¿À» Æ÷ÇÔÇÑ ¿¿¡ ´ëÇÑ À§Ä¡ ÁÖ¼Ò¸¦ °®°í ÀÖ´Ù.
¢Ã¹öÆÛ °ü¸®
-µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½Ã´Â LRU(Least Recently Used) ¸®½ºÆ®¿Í ´õƼ(Dirty) ¸®½ºÆ®·Î ±¸¼ºµÈ´Ù.
-LRU ¸ñ·ÏÀº ´ÙÀ½ ¹öÆÛ ºí·ÏµéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.
·ÀÚÀ¯(Free) ¹öÆÛ: º¯°æµÇÁö ¾Ê¾Ò°í »ç¿ëÇÒ ¼ö ÀÖ´Â ¹öÆÛ
·°íÁ¤(Pinned) ¹öÆÛ: ÇöÀç ¿¢¼¼½ºµÇ°í ÀÖ´Â ¹öÆÛ
·´õƼ(Dirty) ¹öÆÛ: µð½ºÅ©¿¡ ±â·ÏµÉ Çʿ䰡 ÀÖ´Â º¯°æµÈ ¹öÆÛ
-LRU ¸ñ·Ï: °¡Àå ÃÖ±Ù¿¡ °¡Àå Àû°Ô »ç¿ëµÈ ¼øÀ¸·Î ¿¬°áµÈ ¸®½ºÆ®
-´õƼ ¸ñ·Ï: ´õƼ ¹öÆÛ¿¡ ´ëÇÑ LRU ¸®½ºÆ®
-OracleÇÁ·Î¼¼½º°¡ ¹öÆÛ¸¦ ¾×¼¼½ºÇÒ °æ¿ì ÇÁ·Î¼¼½º´Â ¹öÆÛ¸¦ LRU¸ñ·ÏÀÇ MRU(Most Recently Used)³¡À¸·Î °è¼Ó À̵¿ÇÔ¿¡ µû¶ó dirty¹öÆÛ´Â LRU¸ñ·ÏÀÇ LRU ³¡À¸·Î À̵¿½ÃŲ´Ù.
-´õ ¸¹Àº ¹öÆÛ°¡ LRU¸ñ·ÏÀÇ MRU ³¡À¸·Î °è¼Ó À̵¿ÇÔ¿¡ µû¶ó dirty¹öÆÛ´Â LRU¸ñ·ÏÀÇ LRU ³¡À¸·Î À̵¿ÇÏ°Ô µÈ´Ù.
¢ÃServer ÇÁ·Î¼¼½º
-¸ðµç SQL ¹®ÀåÀº »ç¿ëÀÚ ÇÁ·Î¼¼½º·ÎºÎÅÍ Á÷Á¢ ¿ä±¸¸¦ ¹Þ¾Æ ¼¹ö ÇÁ·Î¼¼½º°¡ ó¸®ÇÑ´Ù.
-¼¹ö ÇÁ·Î¼¼½º´Â ¼¼ °¡ÁöÀÇ ÁÖ¿äÇÑ Ã³¸® ´Ü°è¸¦ °ÅÃÄ »ç¿ëÀÚ ÇÁ·Î¼¼½º¿¡°Ô µ¥ÀÌÅͺ£À̽º ÀڷḦ Áö¿øÇÑ´Ù.
·±¸¹®ºÐ¼®(Parse)
SQL ±¸¹®ÀÇ ¹®¹ý°ú ÀÇ¹Ì °Ë»ç
º¸¾È ±ÇÇÑ, ÃÖÀû Ž»ö °æ·Î(Parse tree) ¶Ç´Â ½ÇÇà °èȹ¿¡ ´ëÇÑ Á¶È¸
°³ÀÎ SQL ¿µ¿ª ÇÒ´ç
¡Ø¸¸¾à °íÀ¯ SQL¿µ¿ª¿¡ µ¿ÀÏÇÑ SQL ¹®ÀåÀÌ ÀÖÀ¸¸é »ç¿ëÇÑ´Ù.
·½ÇÇà(Execute)
¹°¸®ÀûÀÎ Àб⳪ ³í¸®ÀûÀÎ ÀÐ±â ¹× ¾²±â ¼öÇà
Á¦¾àÁ¶°Ç °Ë»ç ¼öÇà
ÇÊ¿äÇÑ °æ¿ì µ¥ÀÌÅÍ º¯°æ
·ÀÎÃâ(Fetch)
Select ¹®¿¡ ´ëÇÑ µ¥ÀÌÅÍ ÇàÀ» °Ë»ö
-¼¹ö ÇÁ·Î¼¼½º´Â »ç¿ëÀÚ ÇÁ·Î¼¼½º°¡ ¿ä±¸ÇÑ µ¥ÀÌÅÍ ºí·ÏÀ» LRU ¸®½ºÆ®, Free ¹öÆÛ ¼øÀ¸·Î ã´Â´Ù.
-µð½ºÅ© ºí·ÏÀ» ij½Ã·Î ÀоîµéÀ̱â À§ÇØ ºó ¹öÆÛ ã±â
·LRU ¸ñ·Ï ³¡¿¡¼ºÎÅÍ(MRU end) °Ë»öÀ» ½ÃÀÛÇÑ´Ù.
·ÇÁ·Î¼¼½º´Â ºó ¹öÆÛ¸¦ ã°Å³ª ¹öÆÛ ÇѰèÀÇ ÀÓ°èÁ¡¿¡ µµ´ÞÇÒ ¶§±îÁö °Ë»ö
·»ç¿ëÀÚ ÇÁ·Î¼¼½º°¡ ºó ¹öÆÛ¸¦ ãÀ¸¸é ºí·ÏÀ» ¹öÆÛ·Î ÀÐ¾î µéÀ̰í À̸¦ LRU¸ñ·ÏÀÇ MRU ³¡À¸·Î À̵¿½ÃŲ´Ù.
·ºó ¹öÆÛ¸¦ ãÁö ¸øÇÏ¿© ¹öÆÛ ÇѰèÀÇ ÀÓ°èÁ¡¿¡ µµ´ÞÇϸé
LRU¸ñ·Ï °Ë»öÀ» ÁßÁöÇϰí dirty¹öÆÛ¸¦ µð½ºÅ©¿¡ ±â·ÏÇϵµ·Ï DBWRÇÁ·Î¼¼½º¿¡ ½ÅÈ£¸¦
º¸³½´Ù.
¢ÃSELECT ¼öÇà (User1)
-SELECT ¿ÀÆÛ·¹À̼ÇÀº Ž»ö Á¶°Ç¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅÍ ºí·ÏÀ» µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½Ã¿¡¼ ¸ÕÀú ã°í, ¾øÀ¸¸é µð½ºÅ©·ÎºÎÅÍ ¹öÆÛ ij½Ã·Î °¡Á®¿Í »ç¿ëÇÑ´Ù.
¢ÃUPDATE ¼öÇà (User2)
¢ÃUpdate operation½Ã µ¿ÀÛ
-µ¥ÀÌÅÍ ºí·Ï(B2)À» µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½Ã·Î Àд´Ù.
-·Ñ¹é ºí·Ï(before image)À» µ¥ÀÌÅͺ£À̽º ¹öÆÛ ij½Ã·Î Àд´Ù.
-º¯°æµÉ Çà¿¡ X-LockÀ» °Ç´Ù.
-Record ³»¿ë º¯°æ (System ¹öÆÛ¸¦ ÀÌ¿ëÇØ¼)
-·Ñ¹é µ¥ÀÌÅÍ ºí·Ï(R2)À» ·Ñ¹é ¼¼±×¸ÕÆ® ºí·Ï ¹öÆÛ(Rollback segment)¿¡ ÀúÀåÇÑ´Ù.
¡Ø·Ñ¹é ¼¼±×¸ÕÆ®´Â Ä¿¹Ô µÇÁö ¾Ê¾Ò°Å³ª ÃÖ±Ù¿¡ Ä¿¹ÔµÈ Æ®·£Á§¼Ç¿¡ ÀÇÇØ º¯°æµÈ µ¥ÀÌÅÍÀÇ ÀÌÀü °ª(ÆÄÀϹøÈ£, ºí·Ï ID, ÀÌÀü µ¥ÀÌÅÍ)À» °¡Áö°í ÀÖÀ½
-º¯°æµÈ »çÇ×À» µ¥ÀÌÅÍ ºí·Ï ¹öÆÛ( )¿¡ Àû¿ëÇÑ´Ù.
¢ÃUpdate ÈÄ¿¡ User1ÀÌ °°Àº BlockÀ» SelectÇϸé?
-ÂüÁ¶ÇÒ ºí·ÏÀÌ ´õƼ ºí·ÏÀ̹ǷΠ¼¹ö ÇÁ·Î¼¼½º´Â ·Ñ¹é ¼¼±×¸ÕÆ®¿¡ ÀÖ´Â ÀÌÀü µ¥ÀÌÅÍ Á¤º¸(R2)¸¦ ÀÌ¿ëÇÏ¿© Àбâ Àϰü¼º(read consistent)À» À¯ÁöÇÑ´Ù.
-empno=7369ÀÇ º¯°æ Àü SAL µ¥ÀÌÅÍ 800°ú º¯°æ ÈÄ µ¥ÀÌÅÍ 880Àº Redo log ¹öÆÛ¿¡ ±â·ÏµÈ´Ù.