inspeep

FastAPI์™€ Supabase ์—ฐ๋™ ์„œ๋ฒ„ ์ตœ์ ํ™”: DB ์ธ๋ฑ์‹ฑ(Indexing)์œผ๋กœ API ์‘๋‹ต ์†๋„ 10๋ฐฐ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ

์กฐํšŒ ์ˆ˜ 11
์ถ”์ฒœ ์ˆ˜ 0
๋Œ“๊ธ€ 0

์„œ๋น„์Šค๋ฅผ ์ฒ˜์Œ ์˜คํ”ˆํ–ˆ์„ ๋•Œ์˜ ๊ทธ ์งœ๋ฆฟํ•จ, ๋‹ค๋“ค ์•„์‹ค ๊ฒ๋‹ˆ๋‹ค. ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธํ•  ๋•Œ๋งŒ ํ•ด๋„ ๋‚ด๊ฐ€ ๋งŒ๋“  ๊ฒŒ์‹œํŒ์˜ ๋ชฉ๋ก์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” API๋Š” 0.1์ดˆ๋„ ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜์ฃ . ํด๋ฆญํ•˜๋ฉด ์ฆ‰๊ฐ์ ์œผ๋กœ ํ™”๋ฉด์ด ๋œจ๋Š” ๊ฒƒ์„ ๋ณด๋ฉฐ "์—ญ์‹œ FastAPI ์ด๋ฆ„๊ฐ’ ํ•˜๋„ค, ์—„์ฒญ ๋น ๋ฅด๋‹ค!"๋ผ๋ฉฐ ํ˜ผ์ž ๋ฟŒ๋“ฏํ•ดํ•˜๊ณค ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ๊ธฐ์จ์€ ๊ทธ๋ฆฌ ์˜ค๋ž˜๊ฐ€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ , ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ์™€ ์œ ์ €๋“ค์ด ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— 1๋งŒ ๊ฑด, 3๋งŒ ๊ฑด, 4๋งŒ ๊ฑด ๊ฐ€๊นŒ์ด ์Œ“์ด๊ธฐ ์‹œ์ž‘ํ•˜์ž ๋ฌธ์ œ๊ฐ€ ํ„ฐ์กŒ์Šต๋‹ˆ๋‹ค.

๊ฒŒ์‹œํŒ ์นดํ…Œ๊ณ ๋ฆฌ ํƒญ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ํ™”๋ฉด์— ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ(๋น™๊ธ€๋น™๊ธ€ ๋„๋Š” ์•„์ด์ฝ˜)๊ฐ€ 1~2์ดˆ์”ฉ ๋จธ๋ฌผ๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ๊ตญ ์ธํ„ฐ๋„ท ํ™˜๊ฒฝ์—์„œ 2์ดˆ์˜ ๋”œ๋ ˆ์ด๋Š” ์œ ์ €๋“ค์—๊ฒŒ "๋’ค๋กœ ๊ฐ€๊ธฐ"๋ฅผ ๋ˆ„๋ฅด๋ผ๋Š” ๋ฌด์–ธ์˜ ์••๋ฐ•๊ณผ๋„ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋“ฑ์ค„๊ธฐ์— ์‹์€๋•€์ด ํ˜๋ €์Šต๋‹ˆ๋‹ค. ๋„๋Œ€์ฒด ๋ฌด์—‡์ด ๋ฌธ์ œ์˜€์„๊นŒ์š”?



1. ๋ณ‘๋ชฉ์˜ ์›์ธ ํŒŒ์•…: ๋ฌธ์ œ๋Š” ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ 'DB ๊ฒ€์ƒ‰ ๋ฐฉ์‹'์— ์žˆ์—ˆ๋‹ค


์ฒ˜์Œ์—๋Š” ์ œ ํŒŒ์ด์ฌ ์ฝ”๋“œ๊ฐ€ ๋น„ํšจ์œจ์ ์ธ ์ค„ ์•Œ๊ณ  FastAPI์˜ ๋น„๋™๊ธฐ(async/await) ๋กœ์ง์„ ์ˆ˜์‹ญ ๋ฒˆ ๋œฏ์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„์˜ ์ž์›(CPU, RAM)์€ ๋„๋„ํ•˜๊ฒŒ ๋†€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์›์ธ์€ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋’ค์— ๋ถ™์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Supabase)์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Supabase์˜ SQL ์—๋””ํ„ฐ๋ฅผ ์—ด๊ณ , ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค๋ณด์•˜์Šต๋‹ˆ๋‹ค.

SELECT id, title, created_at FROM posts WHERE category = 'IT ๊ฒŒ์‹œํŒ' ORDER BY created_at DESC;

๊ฒŒ์‹œ๊ธ€์ด ๋ช‡๋ฐฑ ๊ฐœ์ผ ๋•Œ๋Š” ๊ธˆ๋ฐฉ ์ฐพ์•˜์ง€๋งŒ, ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ 4๋งŒ ๊ฐœ์— ์œก๋ฐ•ํ•˜์ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” 'IT ๊ฒŒ์‹œํŒ' ๊ธ€์„ ์ฐพ๊ธฐ ์œ„ํ•ด 1๋ฒˆ ๊ธ€๋ถ€ํ„ฐ 4๋งŒ ๋ฒˆ ๊ธ€๊นŒ์ง€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ•˜๋‚˜ํ•˜๋‚˜ ๋’ค์ ธ๋ณด๋Š” ์ด๋ฅธ๋ฐ” 'ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”(Full Table Scan)'์„ ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘๊บผ์šด ๋ฐฑ๊ณผ์‚ฌ์ „์—์„œ ํŠน์ • ๋‹จ์–ด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด 1ํŽ˜์ด์ง€๋ถ€ํ„ฐ ๋์žฅ๊นŒ์ง€ ๋ˆˆ์œผ๋กœ ๋‹ค ํ›‘๊ณ  ์žˆ๋Š” ์…ˆ์ด์—ˆ์ฃ .






2. ๊ตฌ์› ํˆฌ์ˆ˜ ๋“ฑ์žฅ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชฉ์ฐจ, ์ธ๋ฑ์Šค(Index) ์ƒ์„ฑํ•˜๊ธฐ


์›์ธ์„ ์•Œ์•˜์œผ๋‹ˆ ํ•ด๊ฒฐ์ฑ…์€ ๋ช…ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— '๋ชฉ์ฐจ'๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „๊ณต ์šฉ์–ด๋กœ๋Š” ์ธ๋ฑ์‹ฑ(Indexing)์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

๋ฐฑ๊ณผ์‚ฌ์ „ ๋งจ ๋’ค์— ์žˆ๋Š” '์ฐพ์•„๋ณด๊ธฐ(์ƒ‰์ธ)' ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•˜๋ฉด, ๋‹จ์–ด์˜ ์œ„์น˜๋ฅผ 1์ดˆ ๋งŒ์— ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ์™„๋ฒฝํ•˜๊ฒŒ ๋˜‘๊ฐ™์€ ์›๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์œ ์ €๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ๊ฒ€์ƒ‰ํ•˜๋Š” ์กฐ๊ฑด์ธ category ์นผ๋Ÿผ๊ณผ, ์ตœ์‹ ์ˆœ ์ •๋ ฌ์„ ์œ„ํ•ด ๋งค๋ฒˆ ์‚ฌ์šฉํ•˜๋Š” created_at ์นผ๋Ÿผ์— ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์–ด์ฃผ๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Supabase๋Š” ๋‚ด๋ถ€์— ๊ฐ•๋ ฅํ•œ PostgreSQL์„ ํ’ˆ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์•„์ฃผ ๊ฐ„๋‹จํ•œ SQL ๋ช…๋ น์–ด ํ•œ ์ค„์ด๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” SQL ์—๋””ํ„ฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

CREATE INDEX idx_posts_category_created ON posts (category, created_at DESC);

์—”ํ„ฐ๋ฅผ ์น˜๋Š” ์ˆœ๊ฐ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€์—์„œ๋Š” 4๋งŒ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ, ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„์ˆœ์œผ๋กœ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•œ '๋น„๋ฐ€ ๋ชฉ์ฐจ'๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋ถˆ๊ณผ ๋ช‡ ์ดˆ ๋งŒ์— ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.



3. ๊ฒฐ๊ณผ ํ™•์ธ: 800ms ๋”œ๋ ˆ์ด๊ฐ€ 40ms๋กœ, ๋ฌด๋ ค 20๋ฐฐ์˜ ์†๋„ ํ–ฅ์ƒ


"๊ณผ์—ฐ ์–ผ๋งˆ๋‚˜ ๋นจ๋ผ์กŒ์„๊นŒ?" ๋–จ๋ฆฌ๋Š” ๋งˆ์Œ์œผ๋กœ FastAPI ์„œ๋ฒ„๋ฅผ ์žฌ๊ฐ€๋™ํ•˜๊ณ , API ํ…Œ์ŠคํŠธ ๋„๊ตฌ(Postman)๋ฅผ ์ด์šฉํ•ด ๋˜‘๊ฐ™์€ ๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก ํ˜ธ์ถœ API๋ฅผ ๋‚ ๋ ค๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋Š” ๊ทธ์•ผ๋ง๋กœ ์ถฉ๊ฒฉ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ๊ธฐ ์ „์—๋Š” 800ms(0.8์ดˆ) ๊ฐ€๊นŒ์ด ๊ฑธ๋ฆฌ๋ฉฐ ๊ตผ๋ฒต์ด์ฒ˜๋Ÿผ ์‘๋‹ตํ•˜๋˜ API๊ฐ€, ์ด์ œ๋Š” ๋‹จ 40ms(0.04์ดˆ) ๋งŒ์— JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฑ‰์–ด๋‚ด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ ค 20๋ฐฐ ๊ฐ€๊นŒ์šด ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.




์‹ค์ œ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•ด์„œ ํƒญ์„ ๋ˆŒ๋Ÿฌ๋ณด๋‹ˆ, ํด๋ฆญ๊ณผ ๋™์‹œ์— ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ๋ณผ ์ƒˆ๋„ ์—†์ด ์ฆ‰๊ฐ์ ์œผ๋กœ ๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก์ด ํ™”๋ฉด์— ๋ Œ๋”๋ง ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์œผ๋กœ ํ—ˆ๋•์ด๋˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€, ์ด์ œ๋Š” ์ธ๋ฑ์Šค๋ผ๋Š” ๋ชฉ์ฐจ๋ฅผ ๋ณด๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์™์™ ๋ฝ‘์•„์„œ ๋ฐฑ์—”๋“œ๋กœ ์ „๋‹ฌํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.



๋งบ์œผ๋ฉฐ: ๊ธฐ๋ณธ๊ธฐ์˜ ์ค‘์š”์„ฑ, ํ”„๋ ˆ์ž„์›Œํฌ ๋„ˆ๋จธ๋ฅผ ๋ณด์ž


1์ธ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋ˆˆ์— ๋‹น์žฅ ๋ณด์ด๋Š” ํ™”๋ คํ•œ ํ”„๋ก ํŠธ์—”๋“œ UI๋‚˜ ์ตœ์‹  ๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ์ˆ ์—๋งŒ ์ง‘์ฐฉํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ € ์—ญ์‹œ FastAPI๋ผ๋Š” ์ตœ์‹  ๋น„๋™๊ธฐ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ผ์œผ๋‹ˆ ๋ฌด์กฐ๊ฑด ๋น ๋ฅผ ๊ฒƒ์ด๋ผ๋Š” ์ฐฉ๊ฐ์— ๋น ์ ธ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘๊ณ  ๊บผ๋‚ด๋Š” ๊ทผ๋ณธ์ ์ธ ๊ทธ๋ฆ‡์€ '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค'์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋ฆฌ ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๋”๋ผ๋„, DB ๊ตฌ์กฐ๊ฐ€ ๋น„ํšจ์œจ์ ์ด๋ฉด ์„œ๋น„์Šค๋Š” ๋ฐ˜๋“œ์‹œ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๊ฒช๊ฒŒ ๋œ๋‹ค๋Š” ๋ผˆ์ €๋ฆฐ ๊ตํ›ˆ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์™€ API ์†๋„ ์ €ํ•˜๋กœ ๊ณ ํ†ต๋ฐ›๊ณ  ๊ณ„์‹  ๊ฐœ๋ฐœ์ž๋ถ„์ด ๊ณ„์‹ ๋‹ค๋ฉด, ์„œ๋ฒ„ ์‚ฌ์–‘(RAM, CPU)์„ ๋ˆ ์ฃผ๊ณ  ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš(EXPLAIN)์„ ๋ถ„์„ํ•ด ๋ณด๊ณ  ์ธ๋ฑ์Šค๊ฐ€ ์ œ๋Œ€๋กœ ๊ฑธ๋ ค ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์‹œ๊ธธ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ํ•œ ์ค„์ด ์„œ๋ฒ„ ๋น„์šฉ ์ˆ˜์‹ญ๋งŒ ์›์„ ์•„๊ปด์ฃผ๋Š” ๋งˆ๋ฒ•์„ ๊ฒฝํ—˜ํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๐Ÿ’ฌ ๋Œ“๊ธ€ 0๊ฐœ

IT ๊ฒŒ์‹œํŒ

๊ณต์ง€
Notice
๊ณต์ง€ inspeep ์ปค๋ฎค๋‹ˆํ‹ฐ ์ด์šฉ ๋ฐ ๊ฒŒ์‹œ๋ฌผ ๊ด€๋ฆฌ ๊ทœ์ • ์•ˆ๋‚ด
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.04.15 ๐Ÿ‘€ ์กฐํšŒ 57 ๐Ÿ‘ ์ถ”์ฒœ 0
BEST
์ธ๋„ค์ผ
BEST 2. ์ฝ”๋”ฉ ๋ฌธ์™ธํ•œ์˜ ์›Œ๋“œํ”„๋ ˆ์Šค ์ •๋ณต๊ธฐ: VS Code์™€ FTP์˜ ์Šต๊ฒฉ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 135 ๐Ÿ‘ ์ถ”์ฒœ 0
Random Pick
์ธ๋„ค์ผ
Random Pick ๊ฐค๋Ÿญ์‹œ ํด๋“œ8 ํŒ๋งค๋Ÿ‰ ์—ญ๋Œ€์ตœ๋Œ€...JPG
๐Ÿ‘ค Maodun ๐Ÿ“… 2026.08.07 ๐Ÿ‘€ ์กฐํšŒ 8 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ๊ธฐ
No Image
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
11. ํ•ญ์ƒ ๋งŒ๋“ค๊ณ  ๋‚˜๋ฉด ์กฐ๊ธˆ์”ฉ ์•„์‰ฝ๋‹ค: ๊ณ„์†๋˜๋Š” ๋‹ค๋“ฌ๊ธฐ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 114 ๐Ÿ‘ ์ถ”์ฒœ 0
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
๊ฐœ๋ฐœ๊ธฐ
์ธ๋„ค์ผ
2. ์ฝ”๋”ฉ ๋ฌธ์™ธํ•œ์˜ ์›Œ๋“œํ”„๋ ˆ์Šค ์ •๋ณต๊ธฐ: VS Code์™€ FTP์˜ ์Šต๊ฒฉ
๐Ÿ‘ค ๊ด€๋ฆฌ์ž ๐Ÿ“… 2026.03.05 ๐Ÿ‘€ ์กฐํšŒ 135 ๐Ÿ‘ ์ถ”์ฒœ 0
« ์ฒ˜์Œ ‹ ์ด์ „ 1 2 3 4 5 6 7
โœ๏ธ ๊ธ€์“ฐ๊ธฐ