πŸ—„οΈDB λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ†Œμš” μ‹œκ°„ 예츑기

λ ˆμ½”λ“œ 수, λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μœ ν˜•, 병렬 μ›Œμ»€ 수λ₯Ό μž…λ ₯ν•˜λ©΄ μ˜ˆμƒ μ†Œμš” μ‹œκ°„μ„ κ³„μ‚°ν•΄λ“œλ¦½λ‹ˆλ‹€.

ν–‰
개
ν•­λͺ©κ°’
총 처리 속도 (μ΄ˆλ‹Ή λ ˆμ½”λ“œ)0ν–‰/초
10% μ—¬μœ  버퍼 ν¬ν•¨μ μš©λ¨

DB λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, 미리 μ‹œκ°„μ„ μ•Œμ•„μ•Ό κ³„νšμ΄ μ„ λ‹€

λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ€ μ„œλΉ„μŠ€ 규λͺ¨κ°€ 컀질수둝 λ¦¬μŠ€ν¬κ°€ 큰 μž‘μ—…μž…λ‹ˆλ‹€. λ‹¨μˆœνžˆ 컬럼 ν•˜λ‚˜λ₯Ό μΆ”κ°€ν•˜λŠ” ALTER μž‘μ—…μ€ ν…Œμ΄λΈ” 락 μ‹œκ°„μ΄ μ§§μ•„ μ΄ˆλ‹Ή 수만 건을 μ²˜λ¦¬ν•  수 μžˆμ§€λ§Œ, κΈ°μ‘΄ 데이터λ₯Ό λ³€ν™˜ν•˜κ±°λ‚˜ λ³΅μ‚¬ν•˜λŠ” UPDATEΒ·COPY μž‘μ—…μ€ νŠΈλžœμž­μ…˜ λ‘œκ·Έμ™€ λ””μŠ€ν¬ I/O 뢀담이 컀져 속도가 크게 λ–¨μ–΄μ§‘λ‹ˆλ‹€. 인덱슀λ₯Ό μž¬μƒμ„±ν•˜κ±°λ‚˜ ν…Œμ΄λΈ” 전체λ₯Ό μž¬μž‘μ„±ν•΄μ•Ό ν•˜λŠ” κ²½μš°μ—λŠ” 락 κ²½ν•©κ³Ό λ¦¬μ†ŒμŠ€ μ†Œλͺ¨κ°€ κ°€μž₯ 크기 λ•Œλ¬Έμ— 사전에 μ†Œμš” μ‹œκ°„μ„ μ˜ˆμΈ‘ν•˜κ³  λ‹€μš΄νƒ€μž„ μ—¬λΆ€λ₯Ό κ²°μ •ν•˜λŠ” 과정이 ν•„μˆ˜μž…λ‹ˆλ‹€.

이 κ³„μ‚°κΈ°λŠ” 총 λ ˆμ½”λ“œ μˆ˜μ™€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μœ ν˜•λ³„ 처리 속도, 병렬 μ›Œμ»€ 수λ₯Ό κΈ°μ€€μœΌλ‘œ μ˜ˆμƒ μ†Œμš” μ‹œκ°„μ„ κ³„μ‚°ν•©λ‹ˆλ‹€. μ‹€μ œ 운영 ν™˜κ²½μ—μ„œλŠ” μ„œλ²„ μŠ€νŽ™, λ„€νŠΈμ›Œν¬ μ§€μ—°, λ‹€λ₯Έ μΏΌλ¦¬μ™€μ˜ 락 κ²½ν•© λ“± λ³€μˆ˜κ°€ 많기 λ•Œλ¬Έμ— 계산 결과에 10%의 μ—¬μœ  버퍼λ₯Ό 더해 λ³΄μ—¬μ€λ‹ˆλ‹€. μ˜ˆμƒ μ‹œκ°„μ΄ 1μ‹œκ°„μ„ λ„˜μ–΄κ°„λ‹€λ©΄ νŠΈλž˜ν”½μ΄ 적은 μƒˆλ²½ μ‹œκ°„λŒ€λ‘œ 일정을 μž‘κ±°λ‚˜, μ„œλΉ„μŠ€ 점검 곡지λ₯Ό μ€€λΉ„ν•˜λŠ” 것이 μ•ˆμ „ν•©λ‹ˆλ‹€.

λŒ€κ·œλͺ¨ ν…Œμ΄λΈ”μ„ λ¬΄μ€‘λ‹¨μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•΄μ•Ό ν•œλ‹€λ©΄ gh-ostλ‚˜ pt-online-schema-change 같은 온라인 μŠ€ν‚€λ§ˆ λ³€κ²½ 도ꡬλ₯Ό κ²€ν† ν•΄ λ³΄μ„Έμš”. 원본 ν…Œμ΄λΈ”μ„ κ·ΈλŒ€λ‘œ 두고 μž„μ‹œ ν…Œμ΄λΈ”μ— 데이터λ₯Ό λ³΅μ œν•œ λ’€ μ›μžμ μœΌλ‘œ κ΅μ²΄ν•˜λŠ” 방식이라 μ„œλΉ„μŠ€ λ‹€μš΄νƒ€μž„μ„ μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

자주 λ¬»λŠ” 질문

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ†Œμš” μ‹œκ°„μ„ 쀄이렀면 μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒ?

병렬 μ›Œμ»€ 수λ₯Ό λŠ˜λ¦¬κ±°λ‚˜ 인덱슀λ₯Ό λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 후에 μž¬μƒμ„±ν•˜λŠ” λ“± 배치 처리 μ „λž΅μ„ μ΅œμ ν™”ν•˜λ©΄ μ†Œμš” μ‹œκ°„μ„ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μš΄νƒ€μž„ 없이 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ κ°€λŠ₯ν• κΉŒ?

gh-ost, pt-online-schema-change 같은 온라인 μŠ€ν‚€λ§ˆ λ³€κ²½ 도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ μ„œλΉ„μŠ€ 운영 쀑에도 λ¬΄μ€‘λ‹¨μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμƒ μ‹œκ°„μ΄ μ‹€μ œμ™€ λ‹€λ₯Ό 수 μžˆμ„κΉŒ?

λ„€, μ„œλ²„ μŠ€νŽ™κ³Ό 락 κ²½ν•©, λ„€νŠΈμ›Œν¬ μƒνƒœμ— 따라 μ‹€μ œ μ†Œμš” μ‹œκ°„μ€ μ˜ˆμΈ‘μΉ˜λ³΄λ‹€ λŠ˜μ–΄λ‚  수 μžˆμ–΄ μ—¬μœ  μ‹œκ°„μ„ ν™•λ³΄ν•˜λŠ” 것이 μ•ˆμ „ν•©λ‹ˆλ‹€.