Skip to content
View ChessPark0613's full-sized avatar

Block or report ChessPark0613

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ChessPark0613/README.md

πŸ‘¨β€πŸ’» Skills

HTML5 CSS3 JavaScript Linux PHP Java Spring Boot Python MySQL MariaDB docker

πŸ’‘ IDEs

intellij vscode48 eclipse

πŸ”­ Project

  • PHP

    μ‹œμŠ€ν…œ μ„±λŠ₯ κ°œμ„ 

    πŸ“Œ κ°œμš”

    κ³Όκ±° PHP둜 κ΅¬ν˜„λœ μ‹€μ‹œκ°„ 인원 κ³„μˆ˜ μ‹œμŠ€ν…œμ—μ„œ DB 처리 μ„±λŠ₯ 이슈λ₯Ό κ²ͺ으며, 속도 ν–₯상을 μœ„ν•œ μ„±λŠ₯ κ°œμ„  μž‘μ—…μ„ μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.


    🚩 문제 상황

    • μ΄ˆλ‹Ή μˆ˜μ‹­ 건 μ΄μƒμ˜ 인원 수 데이터가 μž…λ ₯되며 DB에 병λͺ© λ°œμƒ

    • 쑰건 기반 쑰회(μ‹œκ°„, μž₯치, μœ ν˜•)에 λŒ€ν•΄ 응닡 μ§€μ—° λ°œμƒ

    • 데이터 쀑볡 μ‚½μž…μœΌλ‘œ μΈν•œ μš©λŸ‰ 증가 및 λΆˆν•„μš” μ—°μ‚° λ°œμƒ


    πŸ›  κ°œμ„  μž‘μ—…

    βœ… 1. Insert μ„±λŠ₯ κ°œμ„ 

    • Batch Insert 적용

      • 단건 반볡 λŒ€μ‹  닀건 INSERT INTO ... VALUES (...), (...), ...) ν˜•νƒœλ‘œ 처리
    • νŠΈλžœμž­μ…˜ 적용

      • autocommit을 λΉ„ν™œμ„±ν™”ν•˜κ³  일괄 μ»€λ°‹ν•˜μ—¬ I/O λΉ„μš© 절감
    • 쀑볡 λ°©μ§€ 둜직

      • ON DUPLICATE KEY UPDATE, INSERT IGNORE λ„μž…
    • Connection μž¬μ‚¬μš©

      • PDO 기반 connection pool-like ꡬ쑰 ꡬ성

    βœ… 2. Select μ„±λŠ₯ κ°œμ„ 

    • 인덱슀 섀계

      • (device_cd, count_type, count_time) 볡합 인덱슀 생성
    • λΆˆν•„μš” 컬럼 제거

      • SELECT * 제거, ν•„μš”ν•œ ν•„λ“œλ§Œ 쑰회
    • EXPLAIN 뢄석

      • 인덱슀 νƒ€λŠ”μ§€ 확인, μ •λ ¬/ν•„ν„° μˆœμ„œ μ‘°μ •
    • LIMIT 기반 νŽ˜μ΄μ§€λ„€μ΄μ…˜ λ„μž…

      • 전체 κ²°κ³Ό λ°˜ν™˜ λŒ€μ‹  μΌλΆ€λ§Œ 응닡

    πŸ“ˆ κ°œμ„  효과

    ν•­λͺ© κ°œμ„  μ „ κ°œμ„  ν›„ λΉ„κ³ 
    Insert μ²˜λ¦¬λŸ‰ μ΄ˆλ‹Ή 30건 μ΄ˆλ‹Ή 500건 이상 νŠΈλžœμž­μ…˜ + 일괄 μ‚½μž… 적용
    쑰건 기반 Select 응닡 1.5초 0.2초 인덱슀 μ΅œμ ν™” + LIMIT 적용

    πŸ’‘ λŠλ‚€ 점

    κ°„λ‹¨ν•œ λ‘œμ§μ΄λΌλ„ DB ꡬ쑰와 νŠΈλžœμž­μ…˜ 섀계에 따라 μˆ˜μ‹­ 배의 μ„±λŠ₯ 차이가 λ°œμƒν•  수 μžˆλ‹€λŠ” 점을 μ²΄κ°ν–ˆμŠ΅λ‹ˆλ‹€. μ‹€μ‹œκ°„ 데이터λ₯Ό λ‹€λ£¨λŠ” μ‹œμŠ€ν…œμ—μ„œλŠ” DB μ ‘κ·Ό 방식에 λŒ€ν•œ 고민이 무엇보닀 μ€‘μš”ν•˜λ‹€λŠ” 것을 λ°°μ› μŠ΅λ‹ˆλ‹€.

  • JAVA

    ν†΅ν–‰λŸ‰ κ³„μˆ˜ μž₯치 κ΄€μ œ 및 관리 μ‹œμŠ€ν…œ

    πŸ“Œ ν”„λ‘œμ νŠΈ κ°œμš”

    • ν”„λ‘œμ νŠΈλͺ…: κ³„μˆ˜κ΄€μ œ μ‹œμŠ€ν…œ

    • 개발 κΈ°κ°„: 202X.XX ~ 202X.XX

    • λ‹΄λ‹Ή μ—­ν• : λ°±μ—”λ“œ 개발, λ°μ΄ν„°λ² μ΄μŠ€ 섀계 및 μ΅œμ ν™”, 배포 μžλ™ν™”

    • 기술 μŠ€νƒ:
      Spring Boot Β· PostgreSQL Β· TimescaleDB Β· JPA Β· Docker Β· GitHub Actions


    🎯 μ£Όμš” κΈ°λŠ₯

    • μΆœμž… μž₯λΉ„μ—μ„œ μˆ˜μ§‘λœ 인원 데이터λ₯Ό μ‹€μ‹œκ°„ μ €μž₯ 및 뢄석

    • μΆœμž…κ΅¬Β·μž₯μΉ˜Β·μ‹œκ°„ κΈ°μ€€ μœ λ™μΈκ΅¬ λͺ¨λ‹ˆν„°λ§ API 제곡

    • 고속 쿼리λ₯Ό μœ„ν•œ DB νŒŒν‹°μ…”λ‹ 및 ν•˜μ΄νΌν…Œμ΄λΈ” ꡬ쑰 μ‹€ν—˜

    • κ΄€λ¦¬μžμš© μ›Ή νŽ˜μ΄μ§€ 연동을 μœ„ν•œ REST API 제곡


    πŸ›  기술적 νŠΉμ§•

    βœ… λ°±μ—”λ“œ

    • Spring Boot 기반 REST API μ„œλ²„ 섀계

    • JPA + QueryDSL둜 μœ μ—°ν•œ 동적 쿼리 처리

    • κ³„μˆ˜ μœ ν˜•, μž₯치, μ‹œκ°„ κΈ°μ€€ 정렬·필터링 κΈ°λŠ₯ 지원

    βœ… λ°μ΄ν„°λ² μ΄μŠ€

    • PostgreSQL 기반, TimescaleDB ν•˜μ΄νΌν…Œμ΄λΈ”λ‘œ μ‹œκ³„μ—΄ 데이터 처리

    • 10μ–΅ 건 μ΄μƒμ˜ λŒ€κ·œλͺ¨ 데이터 처리 μ‹€ν—˜ μˆ˜ν–‰

    • device_cd, count_type, count_time κΈ°μ€€ 볡합 인덱슀 ꡬ성

    • work_mem, λ³‘λ ¬μ²˜λ¦¬ λ“± μ„±λŠ₯ μ„€μ • μ‹€ν—˜ 및 μ΅œμ ν™”


    βš™οΈ μ„±λŠ₯ μ΅œμ ν™” μ‹€ν—˜

    μ‹€ν—˜ ꡬ쑰 평균 쿼리 μ‹œκ°„ νŠΉμ΄μ‚¬ν•­
    일반 ν…Œμ΄λΈ” μ•½ 4.8초 인덱슀 없이 전체 μŠ€μΊ”
    νŒŒν‹°μ…”λ‹ ν…Œμ΄λΈ” μ•½ 1.2초 device_cd κΈ°μ€€ 100개 νŒŒν‹°μ…˜
    ν•˜μ΄νΌν…Œμ΄λΈ” (64MB) μ•½ 0.5초 TimescaleDB, work_mem νŠœλ‹ 적용

    πŸ’‘ 문제 ν•΄κ²° κ²½ν—˜

    • 문제: λŒ€λŸ‰ 데이터 μ •λ ¬ μ‹œ 응닡 μ§€μ—°
      β†’ work_mem μ‘°μ • 및 ν•˜μ΄νΌν…Œμ΄λΈ”λ‘œ ν•΄κ²°

    • 문제: μž₯치 ID κΈ°μ€€ 쑰회 μ„±λŠ₯ μ €ν•˜
      β†’ device_cd κΈ°μ€€ νŒŒν‹°μ…”λ‹ 및 μΈλ±μ‹±μœΌλ‘œ κ°œμ„ 

    • 문제: μž₯κΈ° 운영 μ‹œ 인덱슀 μ„±λŠ₯ μ €ν•˜
      β†’ μžλ™ vacuum 및 analyze μ„€μ •μœΌλ‘œ 관리 νš¨μœ¨ν™”


    πŸ“Œ ν”„λ‘œμ νŠΈ 회고

    • λŒ€κ·œλͺ¨ μ‹€μ‹œκ°„ 데이터λ₯Ό μ•ˆμ •μ μœΌλ‘œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ DB 섀계 단계뢀터 μ„±λŠ₯을 κ³ λ €ν•œ ꡬ쑰가 μ€‘μš”ν•¨μ„ κ²½ν—˜ν–ˆμŠ΅λ‹ˆλ‹€.

    • μ‹€ν—˜μ„ 톡해 νŒŒν‹°μ…”λ‹, ν•˜μ΄νΌν…Œμ΄λΈ”, 인덱싱 λ“± λ‹€μ–‘ν•œ μ „λž΅μ˜ 차이λ₯Ό μ²΄κ°ν•˜λ©°, 데이터 μ²˜λ¦¬μ— λŒ€ν•œ κΉŠμ€ 이해λ₯Ό μŒ“μ„ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

πŸ“ˆ History

  • 2025.07 ~ : SSAFY
  • 2022.11 ~ 2025.04 : (μ£Ό)KIOT

πŸ“ž Contect

Popular repositories Loading

  1. onlycup onlycup Public

    Java 4

  2. ChessPark0613 ChessPark0613 Public

  3. project-starter-monorepo project-starter-monorepo Public

    docker-compose, ngnix, springboot, psql

    Java

  4. algorithm-repo algorithm-repo Public

    Python