Home > DB > πŸ’Ύ[Database] Primary Key 생성 μ „λž΅ - DB auto increment

πŸ’Ύ[Database] Primary Key 생성 μ „λž΅ - DB auto increment
Database Primary Key DBMS

β€œπŸ’Ύ[Database] Primary Key 생성 μ „λž΅ - DB auto increment”

🍎 Intro.

  • λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ Primary Key(κΈ°λ³Έ ν‚€)λ₯Ό μžλ™μœΌλ‘œ μ¦κ°€μ‹œν‚€λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.
    • 즉, μƒˆλ‘œμš΄ 행이 μ‚½μž… 될 λ•Œ PK 값을 μžλ™μœΌλ‘œ μƒμ„±ν•˜λ―€λ‘œ, 맀번 μˆ˜λ™μœΌλ‘œ μž…λ ₯ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

βœ…1️⃣ Auto Increment의 λ™μž‘ 방식.

  • 데이터가 μ‚½μž…λ  λ•Œ μžλ™μœΌλ‘œ μ¦κ°€ν•˜λŠ” λ²ˆν˜Έκ°€ ν• λ‹Ήλ©λ‹ˆλ‹€.
  • 일반적으둜 μ •μˆ˜(INT, BIGINT λ“±) νƒ€μž…μ˜ μ»¬λŸΌμ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.
  • λ°μ΄ν„°λ² μ΄μŠ€κ°€ κ΄€λ¦¬ν•˜λ―€λ‘œ μ€‘λ³΅λœ 값이 λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • μ‚­μ œλœ 값은 μžλ™μœΌλ‘œ λ³΅κ΅¬λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.(λ‹€μŒ IDκ°€ μ΄μ–΄μ„œ μ¦κ°€ν•©λ‹ˆλ‹€.)

βœ…2️⃣ Auto Increment의 μž₯점.

  • 1. PK 값을 μžλ™ μƒμ„±ν•˜λ―€λ‘œ κ°œλ°œμžκ°€ μ‹ κ²½ 쓰지 μ•Šμ•„λ„ λ©λ‹ˆλ‹€.
  • 2. μ€‘λ³΅λœ PK 값이 λ°œμƒν•  μœ„ν—˜μ΄ μ—†μŠ΅λ‹ˆλ‹€.
  • 3. 데이터 μ‚½μž… 속도가 λΉ λ¦…λ‹ˆλ‹€.
  • 4. μœ λ‹ˆν¬ν•œ ID 값이 μžλ™μœΌλ‘œ μ¦κ°€ν•˜λ―€λ‘œ 관리가 νŽΈλ¦¬ν•©λ‹ˆλ‹€.

βœ…3️⃣ Auto Increment의 단점.

  • 1. 값이 μ‚­μ œλ˜λ©΄ λ‹€μ‹œ λ³΅κ΅¬λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • 예: article_id = 1, 2, 3이 μ‘΄μž¬ν•  λ•Œ 2λ₯Ό μ‚­μ œν•˜λ©΄ λ‹€μŒ μ‚½μž… 값은 4κ°€ λ©λ‹ˆλ‹€.
    • μžλ™ 증가 값은 μž¬μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 2. 데이터 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ‹œ 좩돌 κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€.
    • μ—¬λŸ¬ μ„œλ²„μ—μ„œ λ™μΌν•œ Auto Increment 값을 μ‚¬μš©ν•˜λŠ” 경우 PK 좩돌 κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€.
    • 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ UUID λ‚˜ Snowflake 같은 ID 생성 μ „λž΅μ„ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
  • 3. 닀쀑 ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•œ 샀딩(Sharding) ν™˜κ²½μ—μ„œλŠ” λΆˆνŽΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • Auto IncrementλŠ” 단일 DBμ—μ„œ μ¦κ°€ν•˜λŠ” κ°’μ΄λ―€λ‘œ λΆ„μ‚° ν™˜κ²½μ—μ„œλŠ” 좩돌 μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

πŸš€ κ²°λ‘ .

  • Auto IncrementλŠ” κ°€μž₯ μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” PK 생성 μ „λž΅μ΄λ©° λŒ€λΆ€λΆ„μ˜ 경우 μ ν•©ν•©λ‹ˆλ‹€.
  • ν•˜μ§€λ§Œ 닀쀑 DB ν™˜κ²½μ΄λ‚˜ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œλŠ” UUIDλ‚˜ Snowflake 같은 λ‹€λ₯Έ μ „λž΅μ„ κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€.