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

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

  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (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 ํ”ผ๋“œ
๋กœ๊ทธ์ธ
๋กœ๊ทธ์•„์›ƒ ๊ธ€์“ฐ๊ธฐ ๊ด€๋ฆฌ

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

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

ํƒœ๊ทธ

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

์ตœ๊ทผ๊ธ€

๋Œ“๊ธ€

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

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

Database(8)

  • Database PK ์ƒ์„ฑ ์ „๋žต (without DB, Mysql)

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

    2024.03.17
  • MVCC in Mysql(with ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€)

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

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

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

    2024.01.21
  • JOIN์€ ์ •๋ง ๋А๋ฆฐ๊ฐ€ (์—ญ์ •๊ทœํ™”)

    Q. ์—ญ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”? A. ํ…Œ์ด๋ธ”์ด ์ชผ๊ฐœ์ ธ ์กฐ์ธ ์—ฐ์‚ฐ์ด ์ฟผ๋ฆฌ ๋‚ด ํฌํ•จ๋˜๋ฉด ์„ฑ๋Šฅ์ด ์•ˆ์ข‹์•„์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์กฐํšŒ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ญ์ •๊ทœํ™”๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ๋ฉด์ ‘ ์Šคํ„ฐ๋”” ์ค‘, ์—ญ์ •๊ทœํ™”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋‚˜์˜จ ๋ฌธ๋‹ต์ด๋‹ค. ์งˆ๋ฌธ์€ ๋‚ด๊ฐ€, ๋‹ต๋ณ€์€ ์Šคํ„ฐ๋””์›์ด ํ•ด์ฃผ์…จ๋Š”๋ฐ ๋งŒ์•ฝ ์„œ๋กœ ์ž…์žฅ์ด ๋ฐ”๋€Œ์—ˆ์–ด๋„ ๋˜‘๊ฐ™์ด ๋Œ€๋‹ตํ–ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. Database๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ, ํ˜น์€ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ†ต๋…์ฒ˜๋Ÿผ ๋ฐ›์•„๋“ค์ด๊ฒŒ ๋˜๋Š” ๋ง์ด ๋ฐ”๋กœ ์กฐ์ธ์€ ๋А๋ฆฌ๋‹ค.์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ตœ๊ทผ์— ๋“ค์–ด์„œ๋Š” Database์— ๋Œ€ํ•ด ๋” ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•  ์ผ๋“ค์ด ์ƒ๊ธฐ๋ฉด์„œ ์ด์— ์˜๋ฌธ์ด ์ƒ๊ฒผ๋‹ค. ์กฐ์ธ์ด ๋งŒ์•ฝ ์ง„์งœ ๋А๋ฆฐ๊ฑฐ๋ผ๋ฉด, ์™œ ๊ทธ๋Ÿฐ๊ฑด๋ฐ? ๋ณดํ†ต ์ด๋ ‡๊ฒŒ ๊นŒ์ง€ ๋ฌผ์–ด๋ณด๋ฉด ํ…Œ์ด๋ธ” ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ด์•ผํ•˜๋‹ˆ๊นŒ.๋ผ๊ณ  ๋‹ต๋ณ€์ด ๋Œ์•„์˜ค๋Š”๋ฐ ์ด๋Ÿฐ ๋Œ€๋‹ต์€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ..

    2024.01.07
  • Slow Query ํ™•์ธ๋ฒ• (in Mysql, Postgresql)

    ๋А๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ DB ๋ ˆ๋ฒจ์˜ ํšจ์œจ์  ์ž์›๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋„ ๊ผญ ํ•„์š”ํ•œ ์ผ์ด๋‹ค. ์–ด๋–ป๊ฒŒ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ์‹œ๊ฐ„๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์ง์ ‘ ์ผ์ผ์ด ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด์„œ ์‹œ๊ฐ„์„ ์žฌ์•ผ ํ•˜๋‚˜? ๋‹คํ–‰ํžˆ๋„ ์ผ๋ถ€ DB๋“ค์€ ๊ทธ๋“ค ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ฟผ๋ฆฌ ์ค‘ ์„œ๋ฒ„์— ์•…์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” Slow Query(์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ)๋“ค์„ ๋”ฐ๋กœ ์ €์žฅํ•ด๋‘๊ณ , ์ด๋ฅผ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ์˜ ํ™•์ธ์ด ์šฉ์ดํ•œ ๋‘ DB, Mysql๊ณผ Postgresql์—์„œ ์ด๋ฅผ ์„ค์ •ํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๋ฒ•์„ ๋‹ค๋ฃจ๋ ค๊ณ  ํ•œ๋‹ค. Mysql ์„ค์ •๋ฒ• Mysql์—์„œ๋Š” ์•„๋ž˜ ๋‚ด์šฉ์„ my.cnf์— ์ถ”๊ฐ€ํ•˜๋ฉด 1์ดˆ ์ด์ƒ ๊ฑธ๋ฆฌ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ๋กœ ์ƒ์ •ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์ˆ˜์ง‘์ด ์‹œ์ž‘๋œ๋‹ค. ๋ฌผ๋ก  ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ..

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

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

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

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