Programming/DB (4) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์ฟผ๋ฆฌ ํ๋] Oracle DB ์ฟผ๋ฆฌ ํ๋ ํ๊ณ (ft. LPAD) ์ฌ๋ด ์ ๋ฌด ์ค ์ด์์์ timeout์ด ๋๊ณ ์๋ ์๋น์ค๋ฅผ ๋ฐ๊ฒฌํ๋ค.(๋ด๋ถ ์๋น์ค์ด๊ณ ์์ฃผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ์ ๋ฐ๊ฒฌ์ด ๋ฆ์๋ค.)(์๋น์ค์ ์คํ ์๊ฐ์ด 60์ด ์ด์์ด๋ผ๋ฉด, timeout error๋ฅผ ๋ฑ๊ฒ ๋์ด์๋ค.) ๋ก๊ทธ๋ฅผ ํ์ธํด๋ณด๋ ์กฐํ ์ฟผ๋ฆฌ์์ 60์ด ์ด์ ๊ฑธ๋ฆฌ๋ ๊ฒ์ ํ์ธํ๋ค. ํด๋น ์ ๋ฌด์ ํน์ฑ์, ๊ณ ๊ฐ ์ด๋ ฅ ํ ์ด๋ธ์ ์กฐํํ๋๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์ plan์ ํ์ธํ๋ ํ ์ด๋ธ์ full scanํ๊ณ ์์๋ค.์ด์ ํ๊ฒฝ ๊ฒฝ์ฐ, ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒ์ด๋ฏ๋ก ๊ฐ์ ์ด ํ์ํ๋ค. ์ฟผ๋ฆฌ ์ฑ๋ฅ ์ ํ์ ์ฃผ๋ ์์ธ์ "LAPD์ ์ฌ์ฉ"ํ๊ฒ ํ ์ด๋ธ์ ๊ณ ๊ฐ ์ด๋ ฅ์ ๊ด๋ฆฌํ๋ ํ ์ด๋ธ์ด์๊ธฐ์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ LPAD๋ฅผ ์ฌ์ฉํ์ฌ ์ข๋ณ์ ๋ชจ๋ ๊ฐ๊ณตํ๋ฏ๋ก์จ, ์ธ๋ฑ์ค ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค. ํน์ ๊ธฐ๊ฐ์ ์กฐ๊ฑด์ผ๋ก ๊ฑธ๊ณ ์์๋.. [MySQL] JOIN ๋ฌธ๋ฒ, left join, left outer join, inner join ์ ์ฌ์ง์ ์ถ์ฒ: https://yoo-hyeok.tistory.com/98 SQL join ๋ฌธ์ด ๊ฐ์ฅ ์ ์ ๋ฆฌ ๋์ด ์๋ ๊ทธ๋ฆผ์ธ ๊ฒ ๊ฐ์ต๋๋ค. join: ๋์ผํ column์ ๊ธฐ์ค์ผ๋ก ํ ์ด๋ธ์ ํ๋๋ก ํฉ์นฉ๋๋ค. left(right) join ๊ณผ left(right) outer join์ ์ฐจ์ด์ ์คํ ๊ฒฐ๊ณผ๋ ๋์ผ ํฉ๋๋ค. left join์ ๊ฒฝ์ฐ ๋์ผํ column์ผ๋ก ํ๋๋ก ํฉ์ณ์ง๊ณ left ์ชฝ(A)์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ B์ ๋ฐ์ดํฐ๋ null๋ก ํ์ ๋ฉ๋๋ค. A ํ ์ด๋ธ id name 1 1 aaa 2 2 AAA B ํ ์ด๋ธ id name 1 2 AAA 2 3 bbb left join ๊ฒฐ๊ณผ A left join B id name id name 1 1 aaa null null 2 2 AAA 2 AAA .. postgresql Homebrew๋ก ์ค์น๋ถํฐ DBeaver ์ฐ๊ฒฐ๊น์ง ํจํค์ง ์ค์น ๋๊ตฌ์ธ homebrew๋ฅผ ์ด์ฉํด์ postgresql์ ์ค์นํ๊ณ DBMS ๋๊ตฌ์ธ DBeaver์ ์ฐ๊ฒฐํ๋ ๊ฒ๊น์ง ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. Homebrew๋ DBeaver๋ฅผ ์ค์นํ๋ ๋ถ๋ถ์ ์๋ตํฉ๋๋ค. โ๏ธhomebrew๋ก postgresql ์ค์นํ๊ธฐ 1. ํฐ๋ฏธ๋์ ์ ์ํฉ๋๋ค. 2. ๋ฒ์ ํ์ธํ๊ธฐ brew search postgresql ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด homebrew์์ ์ค์น ๊ฐ๋ฅํ postgresql์ ๋ฒ์ ผ์ ํ์ธํ ์ ์์ต๋๋ค. @ ๋ค์ ์๋ ์ซ์๊ฐ ๋ฒ์ ์ ์๋ฏธํฉ๋๋ค. 3. ์ค์นํ๊ธฐ brew install postgresql ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์ต์ ๋ฒ์ ์ posrgresql์ ์ค์นํ ์ ์์ต๋๋ค. ๋ง์ฝ, ํน์ ๋ฒ์ ์ ์ค์นํ๊ณ ์ถ๋ค๋ฉด, @๊น์ง ํฌํจํ ์ ์ฒด ์ด๋ฆ์ ์ ์ด์ฃผ๋ฉด ๋ฉ๋๋ค. ex).. [DBeaver / MySQL] ๋ฌดํ ๋ก๋ฉ(dead lock) ํด๊ฒฐ DBeaver / MySQL ๋ฌดํ ๋ก๋ฉ ํด๊ฒฐ๋ฒ์ต๊ทผ ํ์๋ค๊ณผ ์งํํ๋ ๊ฐ์ธ ํ๋ก์ ํธ์์ DB์กฐ์์ ํ๋๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ณด๋ DBeaver๊ฐ ๋ฌดํ๋ก๋ฉ์ด ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๋ฅผ ์ข ์ข ๋ชฉ๊ฒฉํ๊ฒ ๋์ต๋๋ค. ๋ณดํต ์ฟผ๋ฆฌ๋ฌธ์ ์๋ฅ๋ ์ธ๋ถ์์ธ์ ์ํด์ ์ ์ ์ข ๋ฃ๋์ง ์์ ์ํ์์ ๋ค๋ฅธ ๊ณณ์์ SQL๋ช ๋ น์ ์คํํ๊ธฐ์ DBeaver๊ฐ ์ด๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ณ ๊ณ์ ์คํ์ ์์ฒญํ๋ค๊ฐ ๋ฌดํ ๋ก๋ฉ(dead lock)์ด ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ ์์ต๋๋ค. ์์Java ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํด query ์คํ -> ์ค๋ฅ -> "DB ๋๊ธฐ ์ค"DBeaver๋ฅผ ํตํด query ์คํ -> "DB ๋๊ธฐ ์ค"์ด ๋๋ ๋ ๊น์ง ๊ธฐ๋ค๋ฆผ... -> ๋ฌดํ ๋ก๋ฉ์ด๋ฐ ๋ชจ์ต ํน์ ๋ฐ๋์ ๊ฒฝ์ฐ์ ๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ๋ฒ์ ์ฌ์ฉํ๋ DB ์ ์ ๊ฒฝ์ฐ MySQL ์๋น์ค๋ฅผ ์ฌ์์ํ๋ ๊ฒ (๊ฐ์ธ .. ์ด์ 1 ๋ค์