โ๊ฒฐ๋ก
MySQL์์๋ Oracle์ ์๋ SELECT FOR UPDATE WAIT
N ๊ตฌ๋ฌธ์ ์ง์ํ์ง ์๋๋ค.
๋์ NOWAIT & SKIP LOCKED ์ต์ ์ด ์กด์ฌํ๋ค.
๐๋ฌธ์ ์ ์
MySQL์์ SELECT FOR UPDATE WAIT 3
๊ตฌ๋ฌธ์ ์ฌ์ฉ ์ SQLSyntaxErrorException
์ค๋ฅ ๋ฐ์.
์ด ๊ตฌ๋ฌธ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋ฝ์ ๊ฑธ๊ณ ์์ ๊ฒฝ์ฐ, ์ง์ ๋ ์๊ฐ(์: 3์ด) ๋์ ์ฌ์๋๋ฅผ ์๋ํ๊ณ , ๊ทธ ์๊ฐ ์์ ๋ฝ์ ์ป์ง ๋ชปํ๋ฉด ์๋ฌ๋ฅผ ๋ฐํํ๋ ์ต์ ์ด๋ค.
java.sql.SQLSyntaxErrorException Create breakpoint : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax t se near 'WAIT 3' at line 7
โย ์์ธ ์ถ๋ก & ํด๊ฒฐ์ฑ ์๋
- ์ด์ ์ ์ฟผ๋ฆฌ๋ฌธ์ ์ฃผ์(โ#โ)์ด ํฌํจ๋ ์ฟผ๋ฆฌ ์คํ ์ ๋ฐ์๋๋ ์ค๋ฅ ๋๋ฌธ์ ๋น์ทํ ์ด์ ๋ก ๋ฐ์๋๋ ๋ฌธ์ ์ธ๊ฐ ์ถ์๋ค. ์๊ฐ์ ๋์ง์ด๋ดค์ ๋ MySQL โ Oracle ๋ง์ด๊ทธ๋ ์ด์
ํ๋ค๊ณ ์ค๋ผํด ์์กด์ฑ ์ถ๊ฐํ๋ค๋ก๋ถํฐ ์ ๋์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ์์กด์ฑ ์ถฉ๋๋ก์ธํ ๋ฌธ์ ์ธ๊ฐ ์ถ์ด ์ฌ๋ฌ ์๋๋ฅผ ํด๋ณด์๋ค.
- ๊น ํค๋๋ฅผ ์ค๋ผํด ์์กด์ฑ ์ถ๊ฐํ๊ธฐ ์ ์ 1/8๋ก head ์ฎ๊ธฐ๊ธฐ โ # ์ฃผ์์์ด๋ ์คํ ์๋จ
- ์์กด์ฑ ์ถ๊ฐํ ๋ ์ธ 1/13์ผ ๋ฒ์ โ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋จ
- ์๋ ๋ฒ์ ์ผ๋ก ๋๋ ค๋ณด์๋๋ฐ ๊ฐ์๊ธฐ โ#โ ์ฃผ์์ด ํฌํจ๋์ด์์ด๋ ์ ๋๋ค???
- โย ์ค๋ผํด ์์กด์ฑ (pom.xml) ์ง์๋ณด๊ธฐ
- โย MySQL 8.0 ๋ฒ์ ๋ถํฐ SELECT FOR UPDATE์ ์ ์ด ์ต์
๋ค์ด ์ถ๊ฐ๋์๋ค๊ณ ํด์ ํน์๋ํด์ ๋ฒ์ ๋ ํ์ธํด๋ณด์์ผ๋ 8๋ฒ์ ์ด ๋ง๋ค.
SELECT version();
๐ย ์์ธ
์์ธ์ MySQL์ด Oracle๊ณผ ๊ฐ์ด WAIT N
๊ตฌ๋ฌธ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ด์๋ค. RealMySQL ์ฑ
๊ณผ ๊ณต์ ๋ฌธ์๋ฅผ ํตํด NOWAIT
& SKIP LOCKED
์ต์
์ ์ง์ํ์ง๋ง, ํน์ ์๊ฐ ๋์ ๋๊ธฐ ํ ์๋ฌ๋ฅผ ๋ฐํํ๋ WAIT N
์ต์
์ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.

๐ย ๋๊ฐ๋ฉฐ
MySQL๊ณผ Oracle์ ๋ฌธ๋ฒ ์ฐจ์ด์ ์ ์ธ์งํ๊ณ , ๊ตฌ๋ฌธ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ํด๋น DBMS์์ ์ง์ํ๋์ง ํ์ธํด์ผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
Ref

Uploaded by N2T