UPDATE / DELETE
UPDATE / DELETE ์ฟผ๋ฆฌ๋ฅผ ๋จ์ผ ํ
์ด๋ธ์ ๋ํด ํ ๊ฑด(๋๋ ์๋) ๋ฟ๋ง ์๋๋ผ, ์กฐ์ธ์ ํตํด ์ฌ๋ฌ ํ
์ด๋ธ์ ๋์์ ๋์์ผ๋ก ํ์ฌ UPDATE / DELETE ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๋ค.
UPDATE(DELETE) ... ORDER BY ... LIMIT n
์ผ๋ฐ์ ์ผ๋ก WHERE ์กฐ๊ฑด์ ์ผ์นํ๋ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ์ง๋ง, ORDER BY + LIMIT ์กฐํฉ์ ์ฌ์ฉํ๋ฉด ์์ n๊ฐ์ ๋ ์ฝ๋๋ง ์ฒ๋ฆฌํ ์ ์๋ค.
-- ์ค๋๋ ๋ก๊ทธ๋ฅผ 1,000๊ฑด์ฉ ์์ ํ๊ฒ ์ญ์
DELETE
FROM event_logs
WHERE event_date < '2024-01-01'
ORDER BY event_date
LIMIT 1000;์ฅ์๊ฐ ์ ๊ธ(Lock)์ผ๋ก ์ธํ ๋ค๋ฅธ ํธ๋์ญ์ ์ํฅ ์ต์ํ
์ด์ ํ๊ฒฝ์์ ์ ์ง์ ๋ฐ์ดํฐ ์ ๋ฆฌ ๊ฐ๋ฅ
๋ฐฐ์น ๋จ์ ์ฒ๋ฆฌ์ ์์ฃผ ์ฌ์ฉ
JOIN UPDATE
๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ์กฐ์ธํด, ์กฐ์ธ๋ ๊ฒฐ๊ณผ๋ฅผ ๋์์ผ๋ก UPDATE / DELETE๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ์ผ๋ก, ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
ํ์ชฝ ํ ์ด๋ธ์ ๊ฐ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ๋ฐ์ํด์ผ ํ๋ ๊ฒฝ์ฐ
์์ชฝ ํ ์ด๋ธ์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ ๋ ์ฝ๋๋ง ์ฐพ์ ๊ฐฑ์ ํด์ผ ํ๋ ๊ฒฝ์ฐ
JOIN ์์์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก, ์คํ ๊ณํ(Execution Plan) ํ์ธ
์ฝ๊ธฐ ์ ์ฉ ํ ์ด๋ธ๋ ์ฝ๊ธฐ ์ ๊ธ(Read Lock), ๊ฐฑ์ ๋์ ํ ์ด๋ธ์ ์ฐ๊ธฐ ์ ๊ธ(Write Lock)์ด ๊ฑธ๋ฆฌ๋ฏ๋ก, ์น ์๋น์ค ํ๊ฒฝ์์๋ ๋ฐ๋๋ฝ ๊ฐ๋ฅ์ฑ์ ์ฃผ์
์ฌ๋ฌ ๋ ์ฝ๋ UPDATE
8.0๋ถํฐ๋ Row Constructor๋ฅผ ์ด์ฉํด ๊ฐ ๋ ์ฝ๋์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ํ ๋ฒ์ ์ ์ฉํ ์ ์๋ค.(MySQL 5.7 ์ดํ ๋ฒ์ ์ ๋์ผํ ๊ฐ์ผ๋ก๋ง ์ ๋ฐ์ดํธ ๊ฐ๋ฅ)
VALUES ROW(...)๊ตฌ๋ฌธ์ ์์ ํ ์ด๋ธ์ ์์ฑํ๋ ํจ๊ณผ์ด๋ฅผ ๊ธฐ์กด ํ ์ด๋ธ๊ณผ ์กฐ์ธํ์ฌ ๊ฐ ๋ ์ฝ๋๋ฅผ ์ ํ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์
๋ค์์ UPDATE๋ฅผ ๊ฐ๋ณ๋ก ์คํํ๋ ๊ฒ๋ณด๋ค ๋คํธ์ํฌ/ํธ๋์ญ์ ์ค๋ฒํค๋ ์ ๊ฐ
JOIN DELETE
JOIN DELETE ๋ฌธ์ฅ์ ์ผ๋ฐ์ ์ธ ๋จ์ผ ํ ์ด๋ธ DELETE์ ๋ฌ๋ฆฌ, ์ญ์ ๋์ ํ ์ด๋ธ์ DELETE ํค์๋ ๋ค์ ์ง์ ๋ช ์ํด์ผ ํ๋ค.
JOIN ์์์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก, ์คํ ๊ณํ(Execution Plan) ํ์ธ
์ฌ๋ฌ ํ ์ด๋ธ์ ๋์์ ์ญ์ ํ ์ ์์ผ๋ฏ๋ก ๊ด๊ณ ๋ฐ์ดํฐ ์ ๋ฆฌ ์ ์ฉ
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?