ÃֽŠ°Ô½Ã±Û(DB)
2017.04.26 / 22:04

[mysql] auto increment À̽´

tomcater
Ãßõ ¼ö 343

mysql ÀÇ auto increment ÂÊÀº ¾à°£ »ìÆìºÁ¾ßÇÒ ³»¿ëµéÀÌ ÀÖ´Ù.





auto increment Çʵå(¿¹, id)¸¦ °¡Áø Å×ÀÌºí¿¡ insert into¹®À» »ç¿ëÇÒ ¶§, auto increment Çʵå(¿¹, i)°¡ ¼øÂ÷ÀûÀÎ ÀϷùøÈ£°¡ ¾Æ´Ñ °ªÀÌ ³ªÅ¸³ª´Â °Ü¿ì°¡ ¹ß»ýÇß´Ù. 



Áï, insert into¹®À» »ç¿ëÇÒ ¶§ ÀϹÝÀûÀÎ auto increment Çʵå´Â 1, 2, 3, 4, 5¿Í °°Àº ¼øÂ÷ÀûÀ¸·Î ´Ã¾î³ª´Âµ¥, 1, 2, 3, 5 ÀÌ·¸°Ô ³ªÅ¸³¯ ¼ö ÀÖ´Ù. 



¿©·¯ ¿øÀÎÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. 


1. insert ignore into ¹®À» »ç¿ëÇÏ´Ù°¡ statement¹®¿¡ À̽´°¡ ¹ß°ßµÇ¾î row°¡ insertµÇÁö ¾Ê¾Æµµ auto incrementÇʵåÀÇ °ªÀÌ Áõ°¡µÉ ¼ö ÀÖ´Ù.


2. insert into¹®ÀÌ Æ÷ÇÔµÈ transactionÀÌ rollback µÇ´Â °æ¿ì auto incrementÇʵåÀÇ °ªÀÌ Áõ°¡µÉ ¼ö ÀÖ´Ù.


3. concurrentÇÑ insert into ¹®ÀÌ µé¾î¿Ã ¶§ auto incrementÇʵåÀÇ °ªÀÌ Áõ°¡µÉ ¼ö ÀÖ´Ù.




µû¶ó¼­, auto increment °ªÀ» ½Å·ÚÇؼ­ ¾ÈµÇ¸ç auto increment¸¦ Áß¿äÇÏ°Ô ¾µ °ÍÀ̶ó¸é, transaction¿¡¼­´Â »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. auto incrementÀ» Áß¿äÇÏ°Ô ¾µ °èȹÀ̶ó¸é, innodb_autoinc_lock_modeÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. 

(mysql db¿¡¼­ show variables Ä¿¸Çµå¸¦ »ç¿ëÇϸé È®ÀÎÇÒ ¼ö ÀÖ´Ù)





mysql 5.0±îÁö´Â auto increment´Â Å×ÀÌºí ¶ôÀ̾úÁö¸¸, 5.1 ºÎÅÍ´Â Å×ÀÌºí ¶ôÀÌ ¾Æ´Ñ °¸ ¶ô(gap lock)À» »ç¿ëÇÑ´Ù. ¶ÇÇÑ, mysql 5.0±îÁö´Â innodb_autoinc_lock_modeÀÇ ±âº»°ªÀÌ 0À̾ú´Ù°¡, mysql 5.1ºÎÅÍ´Â ±âº»°ªÀÌ 1ÀÌ µÇ¾ú´Ù. 




innodb_autoinc_lock_modeÀÇ °ª ºñ±³


0(tranditional)À¸·Î ¼³Á¤Çϸé, Å×ÀÌºí ´ÜÀ§ÀÇ ¶ôÀ» »ç¿ëÇÑ´Ù. ¼º´ÉÀÌ ¶³¾îÁø´Ù. 

1(consecutive)·Î ¼³Á¤Çϸé, ´Ü¼øÇÑ insert into¹®¿¡ ¶ôÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù. bulk insert ¹®À» »ç¿ëÇÒ ¶§ mutex(light weight lock)¸¦ »ç¿ëÇØ ¶ôÀ» »ç¿ëÇÑ´Ù.

2(interleaved)·Î ¼³Á¤Çϸé, ¶ôÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù. ºü¸£°í È®À强ÀÌ ÁÁÁö¸¸, º¹±¸°¡ ¾î·Æ´Ù. bulk insert ¹®À» »ç¿ëÇÒ ¶§ ¾û¸ÁÀÎ auto increment °ªÀÌ ³ªÅ¸³¯ ¼ö ÀÖ´Ù. 




innodb_autoinc_lock_modeÀÇ °ªÀ» Àß º¸°í ¼º´É°ú ±â´ÉÀÇ Àû´çÇÑ Å¸ÇùÀÌ ÇÊ¿äÇÏ´Ù. 




ÂüÁ¶ 


http://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-configurable



Ãâó: http://knight76.tistory.com/entry/auto-increment-À̽´ [±è¿ëȯ ºí·Î±×(2004-2017)]