inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

OFFSET 기반 페이지네이션에서 인덱스를 활용한 성능 최적화 방식과 실제 테이블 접근 시점이 궁금합니다

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요 좋은 강의 감사드립니다~ 게시글 목록 조회시 select * from article where board_id = 1 order by article_id desc limit 30 offset 1499970; 1.여기 쿼리문에서 where 절이 먼저 실행되어 (board_id, article_id) 생성된 secondary Index 에서 board_id = 1 인 데이터들을 찾아서 2.어차피 article_id 도 정렬이 되어 있으니 이 부분에서 offset 을 순차적으로 skip 하면서 결국에 마지막에 3.select * 문을 수행하는게 아닌가요? 2번 과정에서 order by article_id 를 위해 clusterd Index 에서 데이터를 조회하는 과정이 추가되나요? > 게시글 목록 API - 페이지 번호 기반 - N번 페이지, M개 게시글 - 설계 > 20:07 마지막에 최종적으로 select * 문을 조회할때만 clusterd Index 에서 데이터를 조회하는거 아닌가요? 왜냐하면 이미 secondary Index 에서 article_id 가 정렬되어 있기 때문에 그냥 skip 하고 마지막에만 clusterd Index 에서 데이터를 조회할 것 같습니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
바나나 댓글 2 좋아요 0 조회수 242

mysql 데드락 발생

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의 재밌게 잘 듣고 있는 취준생입니다! 테스트 실행 도중에 데드락이 발생하여 이에 관해 여쭤보고자 합니다. 구체적으로인 상황은 article_view_count 테이블에 존재하지 않는 레코드를 삽입 AND 어플리케이션 실행 후, 첫 테스트 코드 실행 을 만족하는 상황에서 DeadLock 에러가 발생합니다. 아마 Lock 획득실패로 인한 에러가 표출되는것으로 보이며 에러 로그는 하단에 첨부했습니다. 제가 생각한 원인은 다음과 같습니다. UPDATE문임에 따라 해당 레코드에 X-Lock이 걸리며, 100개의 요청마다 UPDATE쿼리가 날라가지만, 첫 INSERT 요청의 트랜잭션이 완료되지 않아 이후의 트랜잭션이 잠금 대기 롤백 첫 INSERT 요청이 오래 걸리는 이유를 알고 싶습니다. 양질의 강의 제공해주셔서 감사합니다! 2025-05-01T19:46:27.647+09:00 WARN 27109 --- [kuke-board-view-service] [io-9003-exec-63] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1213, SQLState: 40001 2025-05-01T19:46:27.647+09:00 ERROR 27109 --- [kuke-board-view-service] [io-9003-exec-63] o.h.engine.jdbc.spi.SqlExceptionHelper : Deadlock found when trying to get lock; try restarting transaction Hibernate: update article_view_count set view_count = ? where article_id = ? and view_count < ? 2025-05-01T19:46:27.653+09:00 ERROR 27109 --- [kuke-board-view-service] [io-9003-exec-63] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.CannotAcquireLockException: could not execute statement [Deadlock found when trying to get lock; try restarting transaction] [insert into article_view_count (view_count,article_id) values (?,?)]; SQL [insert into article_view_count (view_count,article_id) values (?,?)]] with root cause com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
윤희종 댓글 2 좋아요 2 조회수 377

페이징 방식의 readAll에서 count 쿼리 변경?

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [댓글 수 구현] 강의의 마지막에서 페이징 방식 readAll() 메소드에서 commentRepository.count(~)를 이번에 ArticleCommentCount를 활용하여 구현한 count(articleid)로 바꿔도 된다고 말씀하셨는데, 둘이 엄밀히 다르지 않나요?? 기존에 구현한 commentRepository.count(~)는 게시글별 댓글수를 조회하지만 limit가 있고, 이번에 구현한 count(articleId)를 limit 없이 그냥 게시글에 대한 댓글 수를 모두 조회하니 의미가 다르지 않나 싶어서 질문드려봅니다!

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
parkhs 댓글 2 좋아요 0 조회수 131

프론트단에 대해

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요. 궁금한 점이 있어 질문드립니다. 추후 스프링 클라우드로 msa 팀프로젝트 만들려고합니다. 프론트단을 만들려고 하면 공통 레이아웃 및 기능화면을 따로 공통 서비스 예를 들면 ui-service를 만들고 이 서비스의 yml에서 게이트웨이를 작성한다고 들었습니다. 이게 제일 효율적인 방법인지 아니면 다른 방법으로 프론트단 구현법이 있는지 알고 싶습니다.

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
ejh 댓글 1 좋아요 0 조회수 109

버전 업데이트 질문

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

새롭게 마지막 섹션에 updated 된것은 어떻게 봐야하나요 ? 커리큘럼 중간에 deprecated 된것도 있는데, 건너뛰면 되는지 기존에 이것 대신에 updated 된곳에 어떤걸 봐라 라고 설명좀 해주실 수 있나요 ?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
Duo 댓글 1 좋아요 0 조회수 134

entity 객체 생성을 data class 로 하신 이유가 있을까요?

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

안녕하세요 강사님! 강의 잘보고있습니다 아직 초반이긴한데... entity 클래스 생성하실 때 data class 로 정의하신 이유가 있을까요?

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
heedoitdox 댓글 3 좋아요 0 조회수 395

강의 설명 및 코드 정리

미해결

카프카 완벽 가이드 - 코어편

안녕하세요 강의 잘 듣고 있습니다. 다름이 아니라 제 상업적 목적이 아닌 제 개인 github에 정리 하려하는데 소스코드라던지 강의의 전반적인 설명을 정리해서 기록해도 될까요? 만약 특수 목적으로 사용한다면 구직 활동에 사용할 예정이며 출처도 남길 예정입니다.

  • kafka
  • 데이터-엔지니어링
김두현 댓글 2 좋아요 0 조회수 215

Module '"@prisma/client"' has no exported member 'cart'. 에러

해결됨

커머스 서비스로 배우는 NestJS 실전 개발 (w. Prisma, Docker, Redis, Kafka)

안녕하세요. 프리즈마에서 정의한 모델타입을 import 할 때 강의랑 동일하게 아래처럼 입력하면 Module '"@prisma/client"' has no exported member 'cart'. 에러가 발생합니다. schema.ts 파일에는 model cart 로 정의되어있고 npx prisma generate 명령어를 통해 클라이언트 생성도 잘 되었습니다. 서칭해보니 Prisma는 모델 이름을 PascalCase 로 자동 변환한다는데 그래서 그런건가요? 강의와는 버전차이인걸까요? import { cart } from '@prisma/client';

  • docker
  • kafka
  • redis
  • nestjs
  • prisma
hcode 댓글 3 좋아요 0 조회수 207

auto.commit.interval.ms 옵션 관련 질문 드립니다.

미해결

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

auto.commit.interval.ms 옵션의 시간이 길게 설정된 경우 강제로 서버가 종료되는 문제 발생 시 commit 누락으로 인한 중복 처리 문제가 발생할 수 있을까요?

  • kafka
  • 데이터-엔지니어링
jimbae 댓글 2 좋아요 0 조회수 166

return@logFor을 사용한 이유가 궁금합니다.

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

return@logFor ResponseProvider.success("SUCCESS") return @logFor ResponseProvider.success("SUCCESS") BankService.kt 의 메서드에서 return @logFor을 사용하는 이유를 잘 모르겠습니다 ㅠㅠ Logging.logFor이란 람다가 끝났다는 걸 바깥함수에 알려주고 이후 로직이 있다면 해당 로직들도 실행하기 위해서일까요? 코알못이라 흙흙

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
soap 댓글 1 좋아요 0 조회수 165

@Transactional.kt에 대한 효용성 질문

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

강사님 안녕하세요. 코틀린을 자바처럼 쓴 제 자신을 혼내면서(?) 열심히 청강 중입니다. 강의에서 작성하신 Transactional.kt 코드를 보면 스프링의 TransactionTemplate을 활용한 명시적 트랜잭션 제어 방식과 큰 차이점이 없어 보입니다. 코틀린 래핑방식으로 사용했을때 어떤 장점이 있는걸까요? 제가 생각한 래핑 방식의 장점은 다음과 같습니다. 코드 스타일, 네이밍, optional 옵션 추가 등에서 약간 더 자유로움 예를 들어 여러 종류의 트랜잭션 처리 규칙(특정 로그, 메트릭, 롤백 조건 등)을 한곳 에 구현해서 공용유틸로 쓰기 좋고, 내부 구현을 추후 TransactionTemplate, PlatformTransactionManager 등 다양한 방식으로 손쉽게 변경 가능 트랜잭션 코드에 특별히 넣어야 할 커스텀 공통로직"이 없다면, 웬만하면 @Transactional / TransactionTemplate만으로 충분하다는 생각입니다. 정답은 없고 팀의 규칙마다 다를것 같아요. 강사님 팀에서는 어떤 방식으로 사용중이신가요? 강의 찍어주셔서 감사합니다앗~! (개인적인 사견인데 말씀하시는 중에 '죄송합니다'는 안하셔도 될것 같아요~!)

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
soap 댓글 1 좋아요 0 조회수 151

@Transactional.kt에 대한 효용성 질문

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

강사님 안녕하세요. 코틀린을 자바처럼 쓴 제 자신을 혼내면서(?) 열심히 청강 중입니다. 강의에서 작성하신 Transactional.kt 코드를 보면 스프링의 TransactionTemplate을 활용한 명시적 트랜잭션 제어 방식과 큰 차이점이 없어 보입니다. 코틀린 래핑방식으로 사용했을때 어떤 장점이 있는걸까요? 제가 생각한 래핑 방식의 장점은 다음과 같습니다. 코드 스타일, 네이밍, optional 옵션 추가 등에서 약간 더 자유로움 예를 들어 여러 종류의 트랜잭션 처리 규칙(특정 로그, 메트릭, 롤백 조건 등)을 한곳 에 구현해서 공용유틸로 쓰기 좋고, 내부 구현을 추후 TransactionTemplate, PlatformTransactionManager 등 다양한 방식으로 손쉽게 변경 가능 트랜잭션 코드에 특별히 넣어야 할 커스텀 공통로직"이 없다면, 웬만하면 @Transactional / TransactionTemplate만으로 충분하다는 생각입니다. 정답은 없고 팀의 규칙마다 다를것 같아요. 강사님 팀에서는 어떤 방식으로 사용중이신가요? 강의 찍어주셔서 감사합니다앗~! (개인적인 사견인데 말씀하시는 중에 '죄송합니다'는 안하셔도 될것 같아요~!)

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
soap 댓글 1 좋아요 0 조회수 225

설정이 헷갈립니다.

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

영상에서 가정하는게 앱이 여러개이고 DB가 1개인 경우가 맞나요? 만약 앱이 2개이고 DB가 2개인 경우는 어떻게 작동하나요??

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
이동연 댓글 1 좋아요 0 조회수 199

두 쿼리문의 차이

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요, 쿠케님 강의 만족스럽게 수강하고 있는 수강생입니다. 아래 2개의 쿼리문에 대해 첫번째 쿼리문에 where article_id = 1 이라는 조건문이 있고(비록 index를 생성한 컬럼이지만), 두번째 쿼리문에서는 where article_id가 빠진 상태인데도 첫번째 쿼리문의 속도가 더 빨랐습니다. explain 해보니, 두번째 쿼리문에 Using filesort가 존재하는데, order by path로 인해 저희가 지정한 index의 컬럼인데도 불구하고 왜 Using filesort가 되고, 속도가 첫번째 쿼리문에 비해 조건이 없는데도 더 느린지 잘 이해가 안됩니다. mysql> explain select path from comment_v2 where article_id = 1 order by path desc limit 10; +----+-------------+------------+------------+------+---------------------+---------------------+---------+-------+---------+----------+----------------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------+------------+------+---------------------+---------------------+---------+-------+---------+----------+----------------------------------+ | 1 | SIMPLE | comment_v2 | NULL | ref | idx_article_id_path | idx_article_id_path | 8 | const | 4990965 | 100.00 | Backward index scan; Using index | +----+-------------+------------+------------+------+---------------------+---------------------+---------+-------+---------+----------+----------------------------------+ 1 row in set, 1 warning (0.00 sec) mysql> explain select path from comment_v2 order by path desc limit 10; +----+-------------+------------+------------+-------+---------------+---------------------+---------+------+---------+----------+-----------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+------------+------------+-------+---------------+---------------------+---------+------+---------+----------+-----------------------------+ | 1 | SIMPLE | comment_v2 | NULL | index | NULL | idx_article_id_path | 110 | NULL | 9981930 | 100.00 | Using index; Using filesort | +----+-------------+------------+------------+-------+---------------+---------------------+---------+------+---------+----------+-----------------------------+ 1 row in set, 1 warning (0.00 sec)

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
parkhs 댓글 2 좋아요 0 조회수 233

트랜잭션 레벨에 대해 궁금합니다!

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요. 쿠케님 강의가 너무 유익해서 잘듣고있습니다! 강의를 진행하면서 문득 생각이 든건데 실무에서 트랜잭션 레벨을 조절을 하기도 하나요??? 기본 트랜잭션은 REPEATABLE_READ인데 갭락이 걸릴것을 우려해서 COMMITED_READ로 바꾼다거나 이런식으로 트랜잭션 레벨을 조절하는 경우가 있나요???

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
이동연 댓글 2 좋아요 0 조회수 163

멀티모듈 질문

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

혹시 강의에 멀티모듈구조 설정하는 방법이 있을까요 ? 하나의 프로젝트에서 무듈별로 나누는 방법은 제공하지 않겠죠 ?

  • spring-boot
  • jpa
  • 아키텍처
  • spring-cloud
  • kafka
  • msa
  • rabbitmq
Duo 댓글 2 좋아요 0 조회수 175

무한 depth 구현 설계에서 질문이 있습니다.

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 00a0z의 prefix(parentPath)를 가지고 모든 자손 댓글에서, 가장 큰 path(descendantsTopPath)를 찾는 과정인데요. 현재 childrenTopPath가 00a0z 00002 이지만 해당 댓글에 대댓글이 없고 00a0z 00001의 대댓글만 있는 상황에서는 00a0z 00002 자기 자신이 childrenTopPath 이자 descendantsTopPath가 되는걸까요? 00a0z 00002 와 00a0z 00001 00000 을 비교했을때 앞의 것이 더 큰 path라고 판단하면 되는걸까요?

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
fb1014 댓글 2 좋아요 0 조회수 242

class 가 아닌 파일로 생성하시는이유

해결됨

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

강의를 보니 코틀린 클래스 생성 대신 파일을 생성하시는데 이유를 알수있을까요?

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
파이리리아코 댓글 2 좋아요 0 조회수 219

락 처리

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

안녕하세요 선생님 동시성 처리 방법에는 redisson을 활용한 방법도 있는데요 혹시 이 방법은 언제 써야할까요? 감사합니다

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
wnsqud70 댓글 2 좋아요 0 조회수 183

인기 태그

인프런 TOP Writers

주간 인기글