INSERT

일반적인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλΉ„μŠ€μ—μ„œλŠ” INSERT ν•  λ•Œ λŒ€λΆ€λΆ„ ν•œ 건 ν˜Ήμ€ μ†ŒλŸ‰μ˜ λ ˆμ½”λ“œλ§Œ μΆ”κ°€ν•˜λŠ” ν˜•νƒœμΈλ°, 이 κ²½μš°μ—” μ„±λŠ₯에 λŒ€ν•΄ κ³ λ €ν•  뢀뢄이 μ—†λ‹€.

μ‚½μž… μ˜΅μ…˜

  • INSERT IGNORE: μ€‘λ³΅λœ λ ˆμ½”λ“œ(UNIQUE 컬럼)κ°€ μžˆμ„ 경우, 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•Šκ³  λ¬΄μ‹œν•˜κ³  λ‹€μŒ λ ˆμ½”λ“œλ‘œ λ„˜μ–΄κ°€λŠ” μ˜΅μ…˜

    • λ°μ΄ν„°μ˜ 정ꡐ함이 덜 μš”κ΅¬λ˜λŠ” λŒ€λŸ‰ 데이터 적재 μ‹œ, 쀑볡 였λ₯˜λ‘œ 인해 전체 μž‘μ—…μ΄ μ€‘λ‹¨λ˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

  • INSERT ... ON DUPLICATE KEY UPDATE: μ€‘λ³΅λœ λ ˆμ½”λ“œ(UNIQUE 컬럼)κ°€ μžˆμ„ 경우, 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•Šκ³  ν•΄λ‹Ή λ ˆμ½”λ“œλ₯Ό UPDATEν•˜λŠ” μ˜΅μ…˜

    • INSERT와 UPDATEλ₯Ό ν•˜λ‚˜μ˜ 쿼리둜 μ²˜λ¦¬ν•  수 μžˆμ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œμ§μ„ λ‹¨μˆœν™”ν•˜λŠ” 데 유용

LOAD DATA

LOAD DATA λͺ…λ Ήμ–΄λŠ” λŒ€μš©λŸ‰ ν…μŠ€νŠΈ νŒŒμΌμ„ ν…Œμ΄λΈ”μ— κ³ μ†μœΌλ‘œ μ μž¬ν•˜κΈ° μœ„ν•œ μ „μš© ꡬ문이닀.

  • MySQL μ—”μ§„κ³Ό μŠ€ν† λ¦¬μ§€ μ—”μ§„ 호좜 횟수λ₯Ό μ΅œμ†Œν™”

  • μŠ€ν† λ¦¬μ§€ μ—”μ§„ λ ˆλ²¨μ—μ„œ 직접 데이터λ₯Ό 적재

ν•˜μ§€λ§Œ LOAD DATA λͺ…령을 μ‚¬μš©ν•  λ•Œ μ£Όμ˜ν•  점이 μžˆλ‹€.

  • 단일 μŠ€λ ˆλ“œ λ™μž‘: 데이터λ₯Ό μ μž¬ν•˜λŠ” μž‘μ—…μ΄ 단일 μŠ€λ ˆλ“œλ‘œλ§Œ 처리

  • 단일 νŠΈλžœμž­μ…˜ μ‹€ν–‰: 파일 전체가 ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μœΌλ‘œ λ¬Άμ—¬ μ‹€ν–‰

λ”°λΌμ„œ 맀우 큰 νŒŒμΌμ„ μ μž¬ν•  경우, μž₯μ‹œκ°„ λ™μ•ˆ ν…Œμ΄λΈ”μ— 잠금이 λ°œμƒν•˜μ—¬ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ˜ μ„±λŠ₯에 영ν–₯을 쀄 수 μžˆλ‹€.

INSERT μ„±λŠ₯에 영ν–₯을 λ―ΈμΉ˜λŠ” μš”μ†Œ

프라이머리 ν‚€(Primary Key) νŠΉμ„±

INSERT 쿼리 μžμ²΄λ³΄λ‹€λŠ” ν…Œμ΄λΈ”μ˜ ꡬ쑰, 특히 프라이머리 ν‚€(Primary Key)의 νŠΉμ„±μ΄ μ„±λŠ₯에 결정적인 영ν–₯을 λ―ΈμΉœλ‹€.

  • 순차적 PK(예: AUTO_INCREMENT): μƒˆλ‘œμš΄ 데이터가 항상 ν…Œμ΄λΈ”μ˜ λ§ˆμ§€λ§‰μ— μΆ”κ°€

    • λ””μŠ€ν¬μ— 순차적으둜 μ“°κΈ° μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ²Œ λ§Œλ“€μ–΄ 높은 μ„±λŠ₯을 μœ μ§€

  • λΉ„μˆœμ°¨μ  PK(예: UUID): μƒˆλ‘œμš΄ 데이터가 ν…Œμ΄λΈ”μ˜ 쀑간 μ—¬λŸ¬ μœ„μΉ˜μ— μ‚½μž…

    • ν•΄λ‹Ή κ³Όμ •μ—μ„œ κΈ°μ‘΄ 데이터 νŽ˜μ΄μ§€λ₯Ό μ°Ύμ•„κ°€κ³ , 곡간이 λΆ€μ‘±ν•  경우 νŽ˜μ΄μ§€ λΆ„ν• (Page Split)을 일으켜 μ‹¬κ°ν•œ μ„±λŠ₯ μ €ν•˜ 유발

    • νŽ˜μ΄μ§€ 뢄할은 λ§Žμ€ 랜덀 λ””μŠ€ν¬ I/Oλ₯Ό λ°œμƒμ‹œν‚€κ³  데이터 νŒŒνŽΈν™” 증가

닀쀑 ν–‰ INSERT(Multi-row INSERT)

μ—¬λŸ¬ 건의 데이터λ₯Ό INSERTν•  λ•ŒλŠ” ν•œ 건씩 반볡 μ‹€ν–‰ν•˜λŠ” 것보닀, ν•˜λ‚˜μ˜ INSERT 문에 μ—¬λŸ¬ VALUES μ ˆμ„ ν¬ν•¨ν•˜μ—¬ μ‹€ν–‰ν•˜λŠ” 것이 훨씬 νš¨μœ¨μ μ΄λ‹€.

ν•˜λ‚˜μ˜ INSERT 문에 μ—¬λŸ¬ 행을 ν¬ν•¨ν•˜λ©΄, λ„€νŠΈμ›Œν¬ 왕볡 횟수, 쿼리 νŒŒμ‹± 및 κ³„νš 수립 μ˜€λ²„ν—€λ“œ, νŠΈλžœμž­μ…˜ 컀밋 μ˜€λ²„ν—€λ“œκ°€ 크게 쀄어듀어 μ„±λŠ₯이 ν–₯μƒλœλ‹€.

참고자료

Last updated

Was this helpful?