2021-07-14(Wed)
Facts (์ฌ์ค, ๊ฐ๊ด)
๊ฐ์ฌ์ผ๊ธฐ๋ฅผ 8์ผ์งธ ์ ๋ ๊ฒ์ ์ฑ๊ณตํ๋ค.
๋ฃจํด์ ๋ฃ์ ํ๋์ ์ ๋ฆฌํ๊ธฐ ์์ํ๋ค.
๋๋ฉ๊ณผ์ ํผ๋๋ฐฑ์ ๋ตํ๊ณ ์ฝ๋๋ฅผ ๊ฐ์ ํ๋ค.
Table lock์ ๋ํด์ ์กฐ์ฌ๋ฅผ ์งํํ๋ค.
Feelings (๋๋, ์ฃผ๊ด)
๋๊ธฐ์ PR์์ save!
๋ฅผ ์๋ชป ์ด ์ผ์ด์ค๋ฅผ ์ฝ๋ฉํธ ์ฃผ๊ณ ์ถ์์ง๋ง, ๋ค๋ฅธ ๋๋ฃ๋ค์ด ์ด๋ฏธ ๋ฆฌ๋ทฐ ์ค์ด์๊ณ ๋ฐ๋์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ๊ฑฐ๋ผ๋ ์๊ฐ์ ์ฃ๋ถ๋ฆฌ ์ฝ๋ฉํธ๋ฅผ ๋จ๊ธฐ์ง ์์๋ค. ์๋ด์์ ๋ํ๋ฅผ ํตํด ๊ฒ์ฆํด๋ดค์ ๋, ๊ฐ์ด ๋ฆฌ๋ทฐ ๋ฐ๋ ์
์ฅ์ธ๋ฐ ๊ตณ์ด ๋ค๋ฅธ ๋ฆฌ๋ทฐ์ด์๊ฒ ์ฝ๋ฉํธ๋ฅผ ๋จ๊ธฐ๋๊ฑด ๊ด๊ณ์ ์ฉ ์ข์ง ์์ ๊ฒ ๊ฐ๋ค๋ ํ๋จ์ด ๋ค์๊ธฐ ๋๋ฌธ์ด๋ค. ํ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์ฑ๋ค์ฌ ์ผ๋ ์ฝ๋ฉํธ๋ ํ๊ธฐํ์ง๋ง, ๊ด๊ณ๋ ์งํจ ๊ฒ ๊ฐ์์ ๋คํ์ด๋ค. ์ํํธ ์คํฌ์ ์ ๋ง ์ด๋ ต๋ค.. ๊ทธ๋ฅ ๋ง๋ฅ ์์งํ๊ฒ ํ๋ํ๊ณ ์ถ๊ธดํ๋ค.
๋ค๋ค ๋ฐ์๋ค๋ณด๋ ๋๋ฉ ๊ณผ์ ํผ๋๋ฐฑ์ ์ฌ์๋๋ง ์งํํด์ฃผ์ จ๋ค. ๊ด์ฐฎ๋ค, ์ง ์ข์ ํผ๋๋ฐฑ๊ณผ ํค์๋๊ฐ ์๋ค๋ฉด ๋๋ ์ ์ฑ์ฅํ ์ ์๋ค. ์ง๊ธ๊น์ง ์ํด์๊ณ , ์์ผ๋ก๋ ์ํด๋ด์ผ๊ฒ ๋ค.
์์งํ ๋ฃจ๋น์คํ์ผ ๊ฐ์ด๋์ negative conditions ๊ฒ์ฌ๋ฅผ ์ง์ํ๋ผ๋ ๊ฒ์ ์๋ 1,2,3๋ฒ ์ผ์ด์ค ์ค 3๋ฒ ์ผ์ด์ค๋ฅผ ์ ํํ๋ผ๋ ๊ฒ์ผ๋ก ์ดํดํ์๊ธด ํ๋ฐ, ํ ์ปจ๋ฒค์ ์ ๋ฐ๋ผ๊ฐ์ :)
๋์์ฑ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํ ์ ํธ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด๋ณด์๋๋ฐ, ๋๋ฆ ์ ๋ง๋ ๊ฒ ๊ฐ์์ ๊ธฐ๋ถ์ข์๋ค. Proc & yield ํ์ฉ๋ฒ์ ๋ง์กฑ์ค๋ฝ๊ฒ ์ตํ ๊ฒ ๊ฐ์์ ๋ฟ๋ฏํ๋ค.
Findings (๋ฐฐ์ด ์ )
DB, ruby์ rails๋ฅผ ํ๋ณด๋ ํ๋ฃจ์๋ค.
DB
SQL column์ ์์ฑํ ๋,
limit
๊ตฌ๋ฌธ์ ํ์ฉํด์ bytes๊น์ง ์ ๊ฒฝ์จ์ ๋ง๋ค์ด์ผํ๋ ๊ฒ์ ์์ผ ๊นจ๋ฌ์๋ค.InnoDB์ Snapshot์ ๋ํด ํ์ตํ๋ค.
Non repetable read
์Phantom read
์ ์ฐจ์ด์ ์ ๋ํด ํ์ตํ๋ค.ํ์๋ ์ ์์ ๋ฌ๋ฆฌ ์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ์ ์์ ์ด ๋ถ๊ฐํ์ง๋ง, ์๋ก์ด ๋ฐ์ดํฐ ์์ฑ์ ๊ฐ๋ฅํ ์ํ์์ ๋ฐ์ํ๋ค.
MySQL์์๋
REPEATABLE READ
์READ COMMITTED
๋ ๋ฒจ ๊ฒฉ๋ฆฌ ์์ค์์SELECT
์ฟผ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๋, ํ ์ด๋ธ์ lock์ ๊ฑธ์ง ์๊ณ , ํธ๋์ญ์ ์ต์ด์ snapshot์ ๊ตฌ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.๋๋ฌธ์
REPEATABLE READ
์์phantom read
๋ ๋ฐ์ํ์ง ์๋๋ค.
WHERE 1=1
๊ตฌ๋ฌธ์ ์ ์ฐ๋์ง ํ์ธํ์๋ค.๋๋ฒ๊น ์ด ์ฝ๋ค.
๋์ ์ฟผ๋ฆฌ ๋ฑ ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ฉฐ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค์ผํ ๋ ๊ตฌ๋ฌธ์ ๋ง๋ถ์ด๊ธฐ ์ฝ๋ค.
Ruby์ Rails
ActiveRecord์ ๋ฉค๋ฒ๋ณ์์ ๊ฐ์ ๋์ ํ ๋,
self
๋ฅผ ๋ถ์ฌ์ผํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ์๋ค.๊ฒฐ๊ตญ
=
๊ณผ ํจ๊ป ์ธ ๋๋self
๋ฅผ ๋ถ์ฌ์ผํ๋ค.=
์ฐ์ฐ์๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ ๋ฉ์๋ ํธ์ถ๊ณผ ์ง์ญ๋ณ์ ํ ๋น ๊ฐ์ ๊ตฌ๋ณ์ด ๋์ง ์๊ธฐ ๋๋ฌธ.
๋์์ฑ ํ ์คํธ์ ์ธ๋งํ ์ ํธ ๋ฉ์๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ตํ๋ค.
Proc & yield๋ฅผ ์์ฉํ์ฌ, ์ํ๋ ๋ฉ์๋๋ฅผ ์ํ๋ ๊ฐฏ์์ ์ฐ๋ ๋์์ ์ํ๋ ํ์๋งํผ ํธ์ถํ ์ ์๋๋ก ํ๋ ์ ํธ ๋ฉ์๋๋ฅผ ๋ง๋ค์๋ค.
Affimation (์๊ธฐ ์ ์ธ)
๋๋ ๋ฌด์ง๋ฅผ ์ธ์งํ์ฌ ์ ๊ทน์ ์ผ๋ก ๋๋ฌ๋ด๊ณ ,
๋ฌด์ง๋ฅผ ์๋ ์์ญ์ผ๋ก ๋ฐ๊พธ์ด๋ด๋ฉฐ,
๊ฒฐ๊ตญ์ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์๋ค.
Last updated