1๏ธโฃ Caching (์บ์ฑ)
๐๏ธ 3-Layer๋ณ ์บ์ ์์น (โญ)
| ์บ์ | ์์น |
|---|
| Metadata Cache | Services Layer |
| Results Cache | Services Layer |
| Local Disk Cache (Warehouse Cache) | Warehouse Layer |
| Remote Disk | Storage Layer (์๋ณธ, ์บ์ X) |
๐ ์๊ธฐ: ๋ฉํ+๊ฒฐ๊ณผ = ์๋น์ค / ๋ก์ปฌ๋์คํฌ = ์จ์ดํ์ฐ์ค
- ๋ฉํ๋ฐ์ดํฐ(ํต๊ณ ์ ๋ณด) ์ ์ฅ โ ์ผ๋ถ ์ฟผ๋ฆฌ๋ ์จ์ดํ์ฐ์ค ์์ด ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์จ์ดํ์ฐ์ค ์์ด ์ฒ๋ฆฌ๋๋ ์ฟผ๋ฆฌ:
SELECT COUNT(*) FROM MY_TABLE;
SELECT CURRENT_DATABASE();
DESCRIBE TABLE MY_TABLE;
SHOW TABLES;
๐ ์๊ธฐ: COUNT(*), SHOW, DESCRIBE โ ์จ์ดํ์ฐ์ค ๋ถํ์ (ํฌ๋ ๋ง ์ ์ฝ)
Results Cache (โญโญ)
๊ธฐ๊ฐ
- ๊ธฐ๋ณธ 24์๊ฐ โ ์ฌ์ฌ์ฉํ ๋๋ง๋ค 24์๊ฐ ์ฐ์ฅ โ ์ต๋ 31์ผ
์ฌ์ฌ์ฉ 3๋ ์กฐ๊ฑด
- ์ฟผ๋ฆฌ๊ฐ ์์ ํ ๋์ผ
- ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
- ๊ฐ์ Role ์ฌ์ฉ
๐ ์๊ธฐ: ๊ฐ์ ์ฟผ๋ฆฌ + ๋ฐ์ดํฐ ๊ทธ๋๋ก + ๊ฐ์ Role
์ฃผ์
CURRENT_TIME() ๋ฑ ์๊ฐ ํจ์ ์ฌ์ฉ ์ โ ์บ์ ์ฌ์ฉ ์ ๋จ
- ๋นํ์ฑํ:
ALTER SESSION SET USE_CACHED_RESULT = FALSE;
- ๋ชจ๋ ์จ์ดํ์ฐ์ค์์ ๊ณต์ ๋จ (์กฐ๊ฑด ์ถฉ์กฑ ์ ๋ค๋ฅธ ์ ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅ)
Local Disk Cache (Warehouse Cache)
- ์จ์ดํ์ฐ์ค SSD์ raw ๋ฐ์ดํฐ ์ ์ฅ
- ์จ์ดํ์ฐ์ค๊ฐ ํด์๋ก ์บ์๋ ํผ
- Resize / Suspend / Drop ์ โ ์ ๊ฑฐ๋จ (โญ)
- ๋ถ๋ถ ์ฌ์ฉ ๊ฐ๋ฅ (๋๋จธ์ง๋ remote์์ ์ฝ์)
๐ ์๊ธฐ: ์บ์ ์ญ์ ํธ๋ฆฌ๊ฑฐ = RยทSยทD (ResizeยทSuspendยทDrop)
2๏ธโฃ Materialized Views (MV)
์ ์
"SELECT ์ฟผ๋ฆฌ๋ก๋ถํฐ ๋ง๋ ์ฌ์ ๊ณ์ฐ + ์๊ตฌ ์ ์ฅ๋ ๋ฐ์ดํฐ์
"
- ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก ์๋ ์
๋ฐ์ดํธ (base table๊ณผ ๋๊ธฐํ)
- ๋ณต์กํ ์ฟผ๋ฆฌ ์ฑ๋ฅ ํฅ์
- Enterprise Edition ์ด์ / Serverless (โญ)
์ผ๋ฐ View vs MV
| ์ผ๋ฐ View | MV |
|---|
| ๋ฐ์ดํฐ ์ ์ฅ | โ (์ฟผ๋ฆฌ๋ง) | โ
(๊ฒฐ๊ณผ ์ ์ฅ) |
| ์๋ | ๋งค๋ฒ ์คํ | ๋ฏธ๋ฆฌ ๊ณ์ฐ โ ๋น ๋ฆ |
| ๋น์ฉ | ์กฐํ ์๋ง | ์คํ ๋ฆฌ์ง + ์๋ ์ ์ง ์ปดํจํ
|
๋น์ฉ & ์ ์ง๊ด๋ฆฌ
- ์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ ์ง โ ์ปดํจํ
์ฌ์ฉ
- ๊ฒฐ๊ณผ ์ ์ฅ โ ์คํ ๋ฆฌ์ง ์ฌ์ฉ (์ ์คํ ๋ฆฌ์ง ๋น์ฉ ์ถ๊ฐ)
- External Table ์์ ์์ฑ ๊ฐ๋ฅ
- ๋ชจ๋ํฐ๋ง:
MATERIALIZED_VIEW_REFRESH_HISTORY
์ ์ฝ์ฌํญ (โญโญโญ)
- ๋จ์ผ ํ
์ด๋ธ๋ง ๊ฐ๋ฅ
- JOIN ๋ถ๊ฐ (self-join ํฌํจ)
- ๊ธ์ง: UDF / Window Function / HAVING / ORDER BY / LIMIT
๐ ์๊ธฐ: "MV๋ ํผ์(๋จ์ผํ
์ด๋ธ) ๋ค๋๊ณ , JOINยทUDFยทWindowยทHAVINGยทORDER BYยทLIMIT ์ ๋จ"
DDL ๋ช
๋ น์ด
CREATE OR REPLACE MATERIALIZED VIEW MV1 AS
SELECT COL1, COL2 FROM T1;
ALTER MATERIALIZED VIEW MV1 SUSPEND;
ALTER MATERIALIZED VIEW MV1 RESUME;
SHOW MATERIALIZED VIEWS LIKE 'MV1%';
๐ ํต์ฌ ์์ฝ
- ๋ฉํ+๊ฒฐ๊ณผ = Services, ๋ก์ปฌ๋์คํฌ = Warehouse
- Results Cache = 24h ~ ์ต๋ 31์ผ, ์กฐ๊ฑด = ๊ฐ์์ฟผ๋ฆฌ+๋ฐ์ดํฐ๋ถ๋ณ+๊ฐ์Role
USE_CACHED_RESULT=FALSE โ ๊ฒฐ๊ณผ ์บ์ ๋๊ธฐ
COUNT(*)/SHOW/DESCRIBE โ ์จ์ดํ์ฐ์ค ๋ถํ์
- Local Cache ์ญ์ = Resize/Suspend/Drop
- MV = Enterprise, ๋จ์ผ ํ
์ด๋ธ, JOIN ๋ถ๊ฐ, UDFยทWindowยทHAVINGยทORDER BYยทLIMIT ๋ถ๊ฐ