๐Ÿƒ๐Ÿƒ‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

๐Ÿƒ๐Ÿƒ‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (64)
    • Network (4)
      • Network ์Šคํ„ฐ๋”” (4)
    • Database (6)
      • DB ์Šคํ„ฐ๋”” (15)
    • CS (12)
      • CS ์Šคํ„ฐ๋”” (12)
    • Backend (16)
      • NestJS (7)
      • Spring (6)
    • ๋ฉด์ ‘ ์ค€๋น„ (6)
      • ๋ฉด์ ‘ ์Šคํ„ฐ๋”” (5)
    • CI, CD (1)
      • Etc (1)
    • ์–ธ์–ด (4)
      • Javascript(Node, TS...) (4)
    • ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ (0)
  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก
  • Github
RSS ํ”ผ๋“œ
๋กœ๊ทธ์ธ
๋กœ๊ทธ์•„์›ƒ ๊ธ€์“ฐ๊ธฐ ๊ด€๋ฆฌ

๐Ÿƒ๐Ÿƒ‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

์ปจํ…์ธ  ๊ฒ€์ƒ‰

ํƒœ๊ทธ

MySQL node.js Nest.js Spring TypeScript JPA ํ”„๋กœ์„ธ์Šค ์šด์˜์ฒด์ œ CS OS ์ธ๋ฑ์Šค NestJS ๋ฐฑ์—”๋“œ ๋„คํŠธ์›Œํฌ Database ๋ฉด์ ‘ db K6 PostgreSQL SQL

์ตœ๊ทผ๊ธ€

๋Œ“๊ธ€

๊ณต์ง€์‚ฌํ•ญ

์•„์นด์ด๋ธŒ

db(8)

  • ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋ฐฉ๋ฒ•๋ก  ๋น„๊ต(Offset vs Cursor)

    ํŽ˜์ด์ง€๋„ค์ด์…˜์ด๋ž€? OLTP ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ํŠน์ • ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์›น๊ฐœ๋ฐœ์˜ ๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ์‹œ์ธ ๊ฒŒ์‹œํŒ์ด ๊ทธ๋ ‡๋‹ค. ๊ฒŒ์‹œํŒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ํŽ˜์ด์ง€์— ์•ฝ 20๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ์ตœ์‹ ์ˆœ์œผ๋กœ ๋…ธ์ถœ์‹œํ‚ค๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด 21 ~ 40๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ์ œ์„œ์•ผ ์กฐํšŒ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์‚ฌ์šฉ์ž๊ฐ€ ์œ„์น˜ํ•œ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก API ์„ค๊ณ„๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ์ด๋ฅผ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋ฐฉ๋ฒ•๋ก ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ข…๋ฅ˜ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ธฐ๋ฒ•์—๋Š” Offset ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜๊ณผ Cursor(Keyset) ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜์ด ์กด์žฌํ•œ๋‹ค. Offset ๊ธฐ..

    2024.02.17
  • ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์˜คํ•ด

    ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜ ์ƒ, ์ทจ์—…์„ ์ค€๋น„ํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ ๋ถ„๋“ค์ด๋‚˜ ํ˜น์€ ์‹ ์ž… ๋‚ด์ง€ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค ์‚ฌ์ด์—๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ๋“œ๋ผ๋งˆํ‹ฑํ•˜๊ฒŒ ๋‚˜๋น ์งˆ ๊ฒƒ์ด๋ผ๋Š” ํ†ต๋…์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜ ๋˜ํ•œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•ด์™”์—ˆ๋Š”๋ฐ ์ด๊ฒŒ ์ •๋ง ๋งž๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์˜คํ•ด์ธ ๊ฒƒ์ธ์ง€ ํ™•์ธํ•ด๋ณด๋ คํ•œ๋‹ค. ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ž€? ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ž€ ๋ฉ”์ธ ์ฟผ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฉ”์ธ ์ฟผ๋ฆฌ ๋‚ด์— ํฌํ•จ๋œ ๋˜ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์–ด๋–ค ์ ˆ์— ํฌํ•จ๋œ ์ฟผ๋ฆฌ์ธ์ง€์— ๋”ฐ๋ผ ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ(SELECT ๋ฌธ), ์ธ๋ผ์ธ ๋ทฐ(FROM ์ ˆ), ์„œ๋ธŒ ์ฟผ๋ฆฌ(WHERE ์ ˆ, ๊ทธ๋ƒฅ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ผ๊ณ  ํ•˜๋Š” ๋“ฏ...) ๋“ฑ์˜ ๋ช…์นญ์œผ๋กœ ๋ถˆ๋ฆฐ๋‹ค. ์•„๋ž˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ์˜ˆ์‹œ์ด๋‹ค. -- ์Šค์นผ๋ผ ์„œ๋ธŒ ์ฟผ๋ฆฌ SELECT p.id AS id, (SELECT email FROM accou..

    2024.01.21
  • SGA vs PGA (in Oracle)

    ํ˜„์žฌ DB ์Šคํ„ฐ๋””์˜ ์ผํ™˜์œผ๋กœ '์นœ์ ˆํ•œ SQL ํŠœ๋‹'์„ ํ•œ๋ฒˆ ๋” ์ฝ๊ณ  ์žˆ๋‹ค. ์ด๋ฒˆ ํŒŒํŠธ๋Š” ์†ŒํŠธ ๋จธ์ง€ ์กฐ์ธ + ํ•ด์‹œ ์กฐ์ธ ์ธ๋ฐ, ๊ฐœ์ธ์ ์œผ๋กœ ํ•ด๋‹น ์„œ์ ์„ ์ด๋ฏธ 1ํšŒ๋…ํ•œ ์ƒํ™ฉ์ด๋ผ ๋‘ ์กฐ์ธ์ด ๋Œ€๋žต์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๊ณ , ์–ด๋–ค ์ƒํ™ฉ์—์„œ ํ™œ์šฉ๋˜๋Š”์ง€๋Š” ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค. ๋‹ค๋งŒ 1ํšŒ๋… ์‹œ ์ž˜ ๋ชฐ๋ผ์„œ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ”๋˜ ์˜ค๋ผํด์˜ PGA์™€ SGA์˜ ๊ฐœ๋…์ด ์žˆ๋Š”๋ฐ, ์ด๋ฒˆ ๊ธฐํšŒ์— ์ด๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ฉด ์ข‹๊ฒ ๋‹ค ์‹ถ์–ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ๋“ค์„ ๊ธฐ๋กํ•ด๋‘๊ธฐ ์œ„ํ•ด ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ฑ…์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ค๋ค„์ง„ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ SGA์™€ PGA ์ ‘๊ทผ์˜ ์†๋„ ์ฐจ์ด์— ์ค‘์ ์„ ๋‘๊ณ  ๋‹ค๋ค„๋ณด๋ คํ•œ๋‹ค. ๊ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ์†Œ๊ฐœ SGA SGA๋ž€ System Global Area์˜ ์•ฝ์ž๋กœ, DB ๋‚ด ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋ฉด์„œ ๋ชจ๋“  ์„ธ์…˜์ด ๊ณต์œ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค. SG..

    2024.01.14
  • ๋ณตํ•ฉ ์ธ๋ฑ์Šค ํ™œ์šฉ ๊ฒฝ์šฐ์˜ ์ˆ˜

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

    2023.12.31
  • Buffer Pinning ๊ธฐ๋ฒ• (in Oracle)

    ์ผ๋ฐ˜์ ์œผ๋กœ Index Scan์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” ๊ธฐ๋ฒ•๋“ค(Index Range Scan, Index Unique Scan ๋“ฑ)์€ Single Block IO๋ฅผ ํ™œ์šฉํ•œ๋‹ค. (ํ•ด๋‹น ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋ฉด ์ด์ „ ๊ธ€ ์ฐธ์กฐ -> ํ…Œ์ด๋ธ” ์Šค์บ” ๋ฐฉ์‹์— ๋”ฐ๋ฅธ DB Block IO ์ „๋žต) ๋’ค์— ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, ์ฝ์–ด์•ผ ํ•  ๋ธ”๋ก์ด ๋ฒ„ํผ์— ์กด์žฌํ•œ๋‹ค๊ณ  ํ•ด๋„ ํ•ด๋‹น ๋ธ”๋ก์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ํฌ์ธํ„ฐ๋ฅผ ํš๋“ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ์–ด์•ผ ํ•  ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์—”, ๊ทธ ์ˆ˜ ๋งŒํผ ๋…ผ๋ฆฌ์  IO๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ณ  ๋งค๋ฒˆ ํฌ์ธํ„ฐ๋ฅผ ์ƒˆ๋กญ๊ฒŒ ํš๋“ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ธ๋ฑ์Šค ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ ์ฝ์–ด๋‚ธ ํ…Œ์ด๋ธ” ROWID๊ฐ€ ๋Œ€๋ถ€๋ถ„ ๋™์ผํ•œ ๋ธ”๋ก์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๋ฉด? ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ ์ˆ˜ ๋งŒํผ ํฌ์ธํ„ฐ ํš๋“ ๊ณผ์ •..

    2023.12.09
  • DB ์ธ๋ฑ์Šค ์ƒ์„ฑ์˜ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ(with Mysql)

    ์‹ค์ œ๋กœ DB๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์—์„œ ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ธ๋ฑ์Šค์ด๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•˜๋ฉด ํŠน์ • ์กฐ๊ฑด์—์„œ ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ ์„ฑ๋Šฅ์ด ๋น„์•ฝ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ๋‚˜ ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ์‹ค์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ๋„, ์ธ๋ฑ์Šค๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ ๋˜ํ•œ ๋‹ค๋“ค ์•Œ๊ณ ์žˆ๋‹ค. ์ด ๋•Œ ๋“ฑ์žฅํ•˜๋Š” ๋…ผ๋ฆฌ๊ฐ€ ๋ฐ”๋กœ ์ธ๋ฑ์Šค๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์  ๋น„์šฉ๊ณผ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์‹œ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์‹œ๊ฐ„์  ๋น„์šฉ์— ๋Œ€ํ•œ ๋น„์ค‘์„ ๋ฌด์‹œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ง‰์ƒ ์ด๋ ‡๊ฒŒ ๊ฒ๋งŒ ์ฃผ๊ณ  ์‹ค์ œ๋กœ ๊ทธ ์ •๋„๊ฐ€ ์–ด๋А ์ •๋„์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ž๋ฃŒ๋Š” ๋งŽ์ด ์—†์–ด์„œ ์ด์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ํ™•์ธํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ Mysql์ด๊ณ , ์•„๋ฌด๋Ÿฐ ๋ฆด๋ ˆ์ด์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋…๋ฆฝ๋œ ํ…Œ์ด๋ธ”์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. -- ํ…Œ์ด๋ธ” ์ƒ์„ฑ create table item ( id BIGINT NOT NULL..

    2023.11.25
์ด์ „
1 2
๋‹ค์Œ
ํ‹ฐ์Šคํ† ๋ฆฌ
ยฉ 2018 TISTORY. All rights reserved.

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”