์๋ก์ด ์ฌ์ INSERT
์๋ก์ด ์ฌ์์ด ์ ์ฌํ์ฌ Database์ Insertํ๋ ค๊ณ ํฉ๋๋ค. ์์ฐจ์ ์ธ ๋ฒํธ๋ก ์ฌ์ID๋ฅผ ๋ถ์ฌํด์ค๋๋ค. ์ด๋ 1006์ด๋ผ๋ ์ฌ์ID๋ฅผ ์ด๋ป๊ฒ ๋ฐ์์์ Insert ์ํฌ๊น์?
MAX(์ฌ์ID) + 1 ?
MAX ํจ์๋ฅผ ์ด์ฉํด์ ์ฌ์ID์ ์ต๋๊ฐ์ ๋ฐ์์ 1์ ๋ํด์ค ๊ฐ์ Insertํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์๊น๋๋ค. 1000์ ๋์ ์ซ์๋ ๋ฌด๋ฆฌ๊ฐ ์์ง๋ง ๋ฐ์ดํฐ์ ์์ด ๋์ด๋ ์๋ก ๋ถํ๋ ์ปค์ง ๊ฒ ์ ๋๋ค.
INDEX ์ฌ์ฉ ?
INDEX๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. index์ ๋งจ ๋ง์ง๋ง ๋ธ๋ญ์ ์ฐพ๋๋ก ํ๋ฉด Root - Branch - Leaf ์ด 3๋จ๊ณ์ ๊ฑธ์ณ ๋ง์ง๋ง ๋ฒํธ๋ฅผ ๋ฐ์์ฌ ์ ์์ต๋๋ค. ํผํฌ๋จผ์ค๋ฅผ ๋์ผ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ด์ง๋ง, Sequence๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.
Sequence
์ค๋ผํด์ Sequence ์ค๋ธ์ ํธ๋ ๋ฒํธ ์๋ ์์ฑ๊ธฐ ์ ๋๋ค. Sequence๋ฅผ ์ฌ์ฉํ๊ฒ๋๋ฉด ๊ทธ๋ฅ ๋ค์ ๋ฒ ๊ฐ์ ๋ฌ๋ผ๋ ์์ฒญ(PseudoColumn : NEXTVAL)์ผ๋ก ์์ฐจ์ ์ผ๋ก ๋ฒํธ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
Sequence ์์ฑ
1
|
GRANT CREATE SEQUENCE TO SCOTT;
|
ORACLE SCOTT ๊ณ์ ์ผ๋ก ๋ง๋ค๊ฒ ์ต๋๋ค. ๊ถํ์ด ์๋ค๋ฉด DBA ๊ถํ์ ๊ณ์ ์์ Sequence๋ฅผ ๋ง๋ค ์ ์๋ ๊ถํ์ ๋ถ์ฌํด์ค๋๋ค.
CREATE SEQUENCE ์ํ์ค๋ช
์๋ต๊ฐ๋ฅ[INCREMENT BY ์ซ์]
์๋ต๊ฐ๋ฅ[START WITH ์ซ์]
์๋ต๊ฐ๋ฅ[MAXVALUE ์ซ์ | NOMAXVALUE]
์๋ต๊ฐ๋ฅ[MINVALUE ์ซ์ | NOMINVALUE]
์๋ต๊ฐ๋ฅ[CYCLE | NOCYCLE]
์๋ต๊ฐ๋ฅ[CACHE ์ซ์ | NOCYCLE]
์๋ต๊ฐ๋ฅ[ORDER | NOORDER]
1
|
CREATE SEQUENCE SEQ_ROW;
|
INCREMENT BY : Sequence์ ๋ฒํธ ์์ฑ ๊ฐ๊ฒฉ์ ๋งํฉ๋๋ค. ์๋ต ์ 1์ฉ ์ฆ๊ฐํฉ๋๋ค.
START WITH : ์์ฑํ ์ฒซ๋ฒ์งธ ๋ฒํธ์ ๋๋ค. ์๋ต์ 1๋ถํฐ ์์ํฉ๋๋ค.
MAXVALUE : ๋ฒํธ์ ์ต๋๊ฐ์ ์ง์ ํฉ๋๋ค. ์๋ต์ NOMAXVALUE๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก 10^27์ด ์ต๋ ์ ๋๋ค.
MINVALUE : ์ต์๊ฐ์ ์ง์ ํฉ๋๋ค. ์๋ต์ NOMINVALUE๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก 1์ด ์ต์์ ๋๋ค.
CYCLE : ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ ๋๋ฌํ์๋ ๋ฐ๋ณตํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค. ์๋ต์ NOCYCLE์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
CACHE : ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฏธ๋ฆฌ ์์ฑํ ๋ฒํธ์ ๊ฐ์๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 20๊ฐ์ ๋๋ค.
Sequence ํ์ธ
1
|
SELECT SEQ_ROW.NEXTVAL FROM DUAL;
|
PseudoColumn์ธ NEXTVAL์ ์ด์ฉํด์ ๋ค์ ๊ฐ์ ๋ถ๋ฌ์ต๋๋ค.
ํ๋ฒ์ด์ NEXTVAL์ ํตํด Sequence๊ฐ ์์๋ฌ๋ค๋ฉด CURRVAL์ ์ด์ฉํด์ ํ์ฌ ๋ง์ง๋ง ๋ฒํธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
DataDictionary ํ์ธ
1
|
SELECT * FROM USER_SEQUENCES;
|
๋ถ๋ช ํ๋ฒ๋ง NEXTVAL์ ํตํด์ ๋ฒํธ๋ฅผ ๋ฐ์์ง๋ง, DataDictionary์ ์๋ LAST_NUMBER๊ฐ์ 21๋ก ๋์ด ์์ต๋๋ค. ์ด๋ CACHE_SIZE๊ฐ ๊ธฐ๋ณธ 20์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ค๋ผํด ์๋ฒ๊ฐ ์คํ๋๋ฉด SGA ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ SEQUENCE์ CACHE_SIZE๋งํผ ๋ฏธ๋ฆฌ ๋ฒํธ๋ฅผ ์์ฑํฉ๋๋ค. ํ์ผํ์ด๋ ์ฃผ์๊ณผ ๊ฐ์ด ๋ง์ ์์ Transaction์ด ๋ฐ์๋๋ ์ ๋ฌด์์ ํ๋ฒ์ ๋ง์ ํ๋ก์ธ์ค๊ฐ SEQUENCE๋ฅผ ์ ๊ทผ์ ๋น ๋ฅธ ์๋๋ก ๋์ํ์ง ๋ชปํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฒํธ๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํด์ค๋๋ค. CACHE์ SIZE๋ Sequence์์ฑ ์ ์ ํ ์ ์์ต๋๋ค.
Sequence ๋ฌธ์ ์
Sequence๋ ํผํฌ๋จผ์ค๋ฅผ ๋์ผ์ ์๋ ์ข์ ์๋จ์ ๋๋ค. ํ์ง๋ง ํ๊ฐ์ง ๋ฌธ์ ์ ์ด ์์ต๋๋ค. ๋ฒํธ์ ์์์ ๊ฐญ์ด ์๊ธธ ์ ์์ต๋๋ค. ๊ฐญ์ด ์๊ธธ์ ์๋ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
1. Transaction rollback ๋์์ ๋
Sequence๋ ํ๋ฒ ์์ฑ๋๋ฉด ์ด์ ๋ฒํธ๋ก ๋์๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ง์ฝ 1๋ฒ ๋ถํฐ ์์ํ๋ Sequence๋ฅผ ์ด์ฉํด์ Insert ์์ ์ 10๋ฒ ํ๋๋ฐ Rollback์ ํ๊ฒ ๋์์ ๊ฒฝ์ฐ Sequence์ ๋ฒํธ๋ Rollback ๋์ง ์๊ณ ๊ทธ๋๋ก ๋ค์ ๋ฒํธ๋ฅผ ๋ฐ์์ ๊ฐญ์ด ์๊น๋๋ค.
2. ์ฌ๋ฌ ํ ์ด๋ธ์์ Sequence ์ฌ์ฉํ ๋
ํ๋์ Sequence๋ก ์ฌ๋ฌ ํ ์ด๋ธ์์ ์ฌ์ฉํ๋ค๋ฉด ๋ฒํธ ์ฌ์ด์ ๊ฐญ์ด ์๊น๋๋ค. ํ์ง๋ง ์ด๋ถ๋ถ์ ๊ฐ๊ฐ ํ ์ด๋ธ๋ณ๋ก ๋ฐ๋ก Sequence๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํด์ฃผ๋ฉด ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
3. ์ค๋ผํด ์๋ฒ๊ฐ ๋ค์ด๋์์ ๋
์ค๋ผํด ์๋ฒ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ CACHE SIZE ๋งํผ์ Sequence ๋ฒํธ๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ๋ค๊ณ ํ์ต๋๋ค. ํ๋ฐ์ฑ ๋ฐ์ดํฐ์ธ ๋ฉ๋ชจ๋ฆฌ๋ ์๋ฒ๊ฐ ๋ค์ด๋๋ค๋ฉด ์ฌ๋ผ์ง๋๋ค. ํ๋ฒ ์์ฑ๋ Sequence ๋ฒํธ๋ ๋ค์ Rollback ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ผํด ์๋ฒ๊ฐ ๋ค์ด๋๋ค๋ฉด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ฒํธ๋ค์ ๋ ์๊ฐ๊ณ ๋ค์ Sequence์ ์์๋ถํฐ ๋ฒํธ๊ฐ ์์ํฉ๋๋ค.
Sequence ๋ฌธ์ ์ ํด๊ฒฐ
2๋ฒ์ ๋ฌธ์ ๋ ํด๊ฒฐ์ด ๊ฐ๋ฅํ์ง๋ง, 1๋ฒ 3๋ฒ์ ๋ฌธ์ ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ทธ๋์ Sequence์ ๊ฒฝ์ฐ, ์์ฐจ์ ์ผ ํ์์์ด ๊ทธ๋ฅ ๊ณ ์ ์ ์์ด๋๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๋๊ธ