inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

조인의 특징

미해결

김영한의 실전 데이터베이스 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의안 제목은 외부 조인이지만 앞에서 내부 조인 얘기를 함께 하기도 하고 명령어도 단순히 JOIN(내부)로 사용하셔서 부모가 자식과 조인을 할 때 행 개수는 유지되거나 증가할 수 있다는 얘기를 이해하기 힘들었습니다. 내부 조인의 경우에는 행이 감소할 수도 있으니까요 강의안 '조인의 특징' 섹션 내 코드의 JOIN 명령어들을 LEFT JOIN으로 변경 또는 외부 조인의 특징이라고 명시해주시면 더 정확할 거 같아요. 섹션 제목이나 본문에 어디에도 '조인'이라고만 나와있어서..ㅠㅠ 당연한 얘기인데도 많이 헷갈렸어요 심지어 내부 조인 명령어를 썼는데도 행 개수가 감소하지가 않는 예시들이어서요

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
재앙 댓글 2 좋아요 0 조회수 15

댓글 삭제 로직에서 동시성 문제 발생 가능성

미해결

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

안녕하세요 쿠케님! 현재 구현되어 있는 댓글 삭제 로직을 보면 1. 댓글 조회 2-1. 자식 댓글이 존재하면 deleted=true 로 변경 2-2. 자식 댓글이 존재하지 않으면 댓글을 물리 삭제하고, 부모 댓글을 재귀적으로 삭제 이렇게 구현되어 있는데요. 동시성 문제가 발생할 수 있겠다는 생각이 들었습니다! T1 삭제 트랜잭션 T2 답글 트랜잭션 ──────────────────────────────────────────── SELECT 부모 SELECT 자식 → 없음 SELECT 부모 → ACTIVE INSERT 답글 COMMIT DELETE 부모 COMMIT (제가 잘 분석한게 맞나 모르겠네요 ㅎㅎ) 물론 이렇게 꼬일 확률은 낮지만, 이런 케이스에 대해서는 select for update를 거는 것이 좋을지, 아니면 fk를 추가하여 정합성을 보장해줘야 할지, 쿠케님 의견을 묻고 싶습니다.

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
bebe 댓글 1 좋아요 0 조회수 17

통계정보 갱신 질문

미해결

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

안녕하세요~ 강의 수강중 통계정보 갱신에 대해 여쭤보고싶은게 있습니다. 운영중에 간혹가다 옵티마이저가 실행계획을 잘못 선택해서 쿼리를 실행해서 슬로우 쿼리가 발생되는 경우가 종종있었습니다. 이때 use index 를 사용해서 주로 해결했었는데 이번 강의에서는 문제가 되는 테이블의 통계정보를 갱신하면 이런 문제들이 해결된다고 하시던데 운영중인 db 에 통계정보 갱신을 했을때 트레이드 오프같은게 없을까요? 실무에서 보통 어떻게 하셨는지 궁금하네요.

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
backendman 댓글 2 좋아요 0 조회수 31

PK 관련하여 궁금한 점이 있어서 질문 드립니다.

미해결

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

안녕하세요! PK 설계와 관련하여 궁금한 점이 있어 질문드립니다. 강의에서는 AUTO_INCREMENT 를 사용하면 PK가 순차적으로 증가하기 때문에 랜덤한 위치에 데이터가 삽입되는 것을 줄이고, 페이지 분할을 최소화할 수 있어 사용을 권장한다고 이해했습니다. 그런데 한편으로는 MSA 환경에서 PK로 UUID를 많이 사용한다는 이야기를 들었습니다. UUID를 사용하면 각 서비스에서 ID를 독립적으로 생성할 수 있다는 장점이 있다고 하는데, 서비스별로 데이터베이스와 테이블이 분리되어 있다면 각 테이블의 PK는 해당 테이블 내에서만 유일하면 되기 때문에 AUTO_INCREMENT 를 사용해도 문제가 없지 않을까 생각했습니다. 그래서 다음 내용이 궁금합니다. 실제 MSA 환경에서는 일반적으로 PK로 UUID를 많이 사용하는지 UUID 사용으로 인한 인덱스 크기 증가와 페이지 분할 등의 단점보다 UUID의 장점이 더 커지는 판단 기준은 무엇인지 찾아보니까 시간 순서 특성이 있는 UUID v7 라는 것도 있는데 이를 사용하는 건지 이런 궁금증이 생기는데 시원하게 해결이 되지 않아서 질문으로 남깁니다. 항상 좋은 강의 올려주셔서 감사합니다. 다음 강의에 해당 내용에 대한 설명이 다 있는 것을 확인하였습니다. 감사합니다!

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
Gomgomi 댓글 2 좋아요 0 조회수 25

탐색을 한번 더 하지 않게 하는 방식 중 어댑티브 해시 방식도 맞는지 궁금 합니다.

미해결

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

커버링 인덱스가 아니라고 가정한다면 클러스터링 인덱스까지 2번의 B+Tree 탐색을 하지만 커버링 인덱스라면 이런 탐색을 한번 줄여 발생하는 IO 작업을 최적화 하는것으로 이해 했습니다 커버링 인덱스 말고도, 자주 사용되는 페이지의 위치를 자동으로 InnoDB에서 어댑티브 해시 인덱스라는 공간에 저장 하는것으로 알고 있는데 이 방식도 IO 작업을 최적화 하는 것인지 궁금 합니다

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
ggg7515 댓글 2 좋아요 0 조회수 23

차트시트 발송이 안되는 이유는 무엇일까요?

해결됨

[백문이불여일타] 데이터 분석을 위한 기초 SQL

링크 걸어두신대로 SQL 입문자를 위한 차트시트 신청을 했는데 메일이 안오네요. 파일 받을 수 있는 방법이 있을까요?

  • sql
  • mysql
wntpdus99 댓글 2 좋아요 0 조회수 15

컬럼 크기가 대용량인 경우 DB 버퍼 풀에 전부 올라오는지 궁금합니다

미해결

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

컬럼의 크기가 평균 1MB 정도 된다고 했을 때DB 버퍼 풀에 전부 올라오고 나서 서비스 서버로 올라가게 되는지 궁금 합니다 ! 서비스 서버 단에서 스트림으로 처리 한다고 해서 DB 메모리 공간도 같이 효율적으로 사용 되는지도 궁금 합니다 !

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
ggg7515 댓글 2 좋아요 0 조회수 21

실습데이터 ORDERS 생성 시간 질문요...

미해결

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

member와 product 데이터는 각각 4분, 5분 걸렸는데 orders는 2시간이 지나도 계속 돌고 있네요. 갤럭시북2 사용중인데 다른분들도 오래 걸릴까요??

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
leelojhol 댓글 1 좋아요 0 조회수 47

MySQL 서버구조 쿼리파서 질문 있습니다 !

미해결

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

쿼리 파서 기능에서 구분 분석을 통해 토큰 형식으로 분리하고, 어휘 분석을 통해서 문법 검증 및 파스 트리를 만든다고 알고 있었는데 구문 분석 부분에서 한번에 일어나는 작업인지 궁금 합니다

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
ggg7515 댓글 1 좋아요 0 조회수 37

상태 기반 데이터관리에서 특정 시점에 대한 정보는 어떻게 관리할 수 있나요?

미해결

김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴

안녕하세요 영한님 마스터패스 구매하고 모든 강의를 재밌게 수강하고 있는 백엔드 개발자 취업준비생입니다. 강의를 듣다가 궁금한 점이 생겨 질문남깁니다! 답변해주시면 너무 감사하겠습니다. is_deleted 와 같은 컬럼을 사용하는 soft delete 방식은 실제 삭제 시점을 알 수 없기 때문에 주로 사용하진 않고, deleted_at을 컬럼으로 두고 삭제 여부/시점을 모두 판별할 수 있게 한다고 하셨는데, 그렇다면 뒤에 설명해주신 상태 기반 관리를 통해서 ProductStatus나 OrderStatus를 관리할 경우, deleted_at이나 다른 시점을 컬럼으로 두면 나쁜 설계라고 하셨습니다. 그렇다면 결국 ProductStatus와 같은 상태를 가진 것들은 삭제 시점이나 특정 시점을 알 수 없는건 마찬가지 아닌가요? 만약 삭제 시점이나 회원의 탈퇴 시점같은 것들을 관리해야 한다면 어떻게 해야할까요? 이러한 해결 방법으로써 이력 테이블 등의 방법이 있을 것 같은데 취준생의 개인 프로젝트로 사용하기에 규모가 너무 커지지 않을까 걱정됩니다. 실제 사례를 예시로 들어보자면 UserStatus 상태값입니다. 이를 테이블의 한 컬럼으로 두고 내부에는 ACTIVE(정상), SUSPENDED(임시정지), BANNED(영구정지), WITHDRAWN(탈퇴) 등의 여러 상태를 가집니다. 이때 만약 withdrawn_at 컬럼이 존재하지 않고 상태값만으로 관리하면 탈퇴 시점이 언제인지 등을 확인할 수 없게 됩니다. 이 경우에는 withdrawn_at 컬럼을 상태값과 함께 두는 것보다 이력 테이블을 사용하는게 더 나은 설계이자, 개인 소규모 프로젝트에서도 해당되는 사항인지 궁금합니다. 작은 조언이라도 해주시면 감사하겠습니다! -- 에이전트 인프런 에이전트에 같은 내용으로 질문을 남겨봤는데 withdrawn_at 컬럼을 상태 컬럼과 함께 사용하는 것이 효율적이고 합리적인 설계라고 합니다. 실제로 이력 테이블은 개인 프로젝트 규모정도에서는 사용하기에 관리 복잡도가 증가할 가능성이 있다고 합니다. 이에 대해 어떻게 생각하시는지도 궁금합니다.

  • sql
  • mysql
  • dbms/rdbms
  • 소프트웨어-설계
  • SQLD
yeoeol 댓글 1 좋아요 0 조회수 22

Postgresql 아키텍처 업데이트

미해결

김영한의 실전 데이터베이스 - 성능 최적화, 실행 계획과 인덱스 완전 정복

안녕하세요 영한님! 강의 재밌게 잘 듣고있습니다. 아직 섹션3까지 들었는데 MySQL 아키텍처 설명을 너무 잘해주셔서 너무 재밌게 들었습니다! 개인적으로 실무에서 PostgreSQL을 사용하고 있는데 혹시 PostgreSQL 아키텍처 강의도 업데이트 예정이 있으신지 궁금합니다!

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
yp kim 댓글 2 좋아요 1 조회수 55

AWS 배포 성능테스트

미해결

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 섹션 3 15강 수강 2. 어려움을 겪는 부분 아직 섹션3 15강밖에 수강하지 않았지만 예전에 배포했을때 설정 문제로 과금이 나간적이있어서 강의는 계속 들으면서 로컬에서 해보고 개인 프로젝트에 적용해보는것이 좋을까요? 아니면 둘 다 하는것이 좋을까요??

  • java
  • spring
  • mysql
  • redis
  • 이력서
개발자....? 댓글 1 좋아요 0 조회수 49

76강 2분33초 내용 오류

미해결

김영한의 실전 데이터베이스 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 오류인 부분이라 신고합니다. 76강 2분 33초 부분에서 transaction 설명을 위해 계좌에서 이체되는 부분 말씀 하실 때 A고객이 1만원 이체하여 잔금이 줄어 4만원인 부분을 작성하시고 연이어 B고객 부분을 말씀하실 때 이체를 받았으니 1만원이 되어야 한다고 하며 10000원으로 적으셨습니다. 하지만 내용 상 30000원이 되어야 하는 부분으로 보입니다.

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
Juan (박정환) 댓글 2 좋아요 0 조회수 50

인덱스 강의 혹은 해당 강의 전 듣어야 하는 사전강의 문의

해결됨

10,000++억의 데이터를 다루는 카카오 면접관의 MySQL

강사님 안녕하세요 강의를 듣다보니 인덱스를 어느정도 아는 사람이 들어야 이해도가 많이 높아질거 같아 문의 드립니다 혹시 강사님 강의 중 인덱스나 좀 더 기본기 모델링을 배울 수 있는 강의가 있을까요? (ex: Hash Table과 Tree 자료구조,인덱스) 또, 혹시 행 기반 dbms가 아닌 duck db , 빅쿼리등 열 기반 dbms 강의도 론칭 예정이 있으신지 궁금합니다 현재 빅쿼리를 사용중인 신입 데이터 엔지니어인데 인덱스 개념은 안쓰고 파티셔닝, 클러스터링 밖에 없더라구요..

  • mysql
  • dbms/rdbms
  • 데이터-엔지니어링
  • backend
홍태경 댓글 2 좋아요 0 조회수 52

ordered_at, paid_at 과 같이

미해결

김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복

member 테이블에서 회원의 가입일은 비즈니스 시간이라고 생각했는데, 이 컬럼은 왜 created_at 으로 시스템의 시간만을 의미하도록 되어 있는지 궁금합니다. ordered_at, paid_at 과 같이 가입일 컬럼이 따로 존재해야 하는게 아닌지 궁금합니다! 강의자료에 예시로 적어주신 것처럼 비즈니스 시간이 데이터베이스 수준에서 마이그레이션을 해야한다면 회원가입일을 보존할 수 없지 않을까요?

  • sql
  • mysql
  • dbms/rdbms
  • 소프트웨어-설계
  • SQLD
yeoeol 댓글 1 좋아요 0 조회수 36

기본편 오타 제보 드립니다.

미해결

김영한의 실전 데이터베이스 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] CASE문 단원 중 위의 '전체 GROUP BY'에서 '전체'라는 말이 오타인것 같아요~ CASE문 단원의 연습문제 4번 제시문 중 사용자 이름, 총 주문 건수, ` '전자기기' 주문 건수, '도서' 주문 건수를 각각 ~ 에서 '패션' 주문 건수라는 말이 누락되어 있는 것 같습니다. 영한님 강의 너무 잘듣고 있습니다!! 완강까지 힘내보겠습니다. 양질의 강의 진심으로 감사드립니다.

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
박경민 댓글 2 좋아요 0 조회수 50

노션링크가 접근되지 않습니다.

해결됨

Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초

제목처럼 강의자료 노션 링크가 접근이 되지 않습니다. 그리고 강사님은 처음 어떻게 공부하셨나요? 어떤 루트로 학습하셨는지 궁금합니다.

  • mysql
  • jenkins
  • spring-boot
  • spring-batch
  • gradle
naje 댓글 1 좋아요 0 조회수 45

Boolean 컬럼 인덱스와 Cardinality에 따른 실행 계획에 대하여

해결됨

채널톡 면접관이 직접 알려주는 CS 면접 대비 - 데이터베이스 편

강의를 듣다가 궁금한 부분이 있어 질문드립니다! Secondary Index를 사용하면 Primary(Clustering) Index Lookup 과정에서 랜덤 I/O가 발생할 수 있다고 이해하고 있습니다 다만 이는 Cardinality가 낮은 Boolean 컬럼에만 국한된 문제라기보다는, Secondary Index의 정렬 순서와 PK 순서가 일치하지 않는 경우 일반적으로 발생할 수 있는 문제라고 생각합니다 또한 MySQL에서는 MRR을 통해 조회 대상 PK를 정렬한 뒤 접근함으로써 랜덤 I/O를 줄일 수도 있는 것으로 알고 있습니다 강의에서는 Boolean 컬럼의 경우 특정 값이 전체 데이터의 상당 부분을 차지할 가능성이 높기 때문에, MRR을 통한 정렬 및 테이블 Lookup보다 Full Table Scan이 더 효율적일 수 있다는 취지로 설명해주신 것으로 이해했습니다 그렇다면 인덱스의 효율은 Cardinality 자체만으로 결정된다기보다, 실제 값의 분포와 선택도, 예상 조회 행 수, Covering Index 여부, MRR 적용 여부 등의 요인을 함께 고려해 판단한다고 이해해도 될까요?

  • DBMS/RDBMS
  • innodb
  • mysql
소준영 댓글 1 좋아요 1 조회수 62

[실습] WHERE문이 사용된 SQL문 튜닝하기 - 2

미해결

비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)

안녕하세요. 강의 잘 보고 있습니다! [실습] WHERE문이 사용된 SQL문 튜닝하기 - 2 해당 강의에서 질문이 있습니다 :) 이전 강의에서 멀티 컬럼 인덱스의 경우, 첫번째 컬럼 기준으로 먼저 정렬하고, 그 다음 두번째 컬럼 기준으로 정렬한다고 배웠던 것 같습니다! 따라서 idx_created_at <-> idx_created_at_department 실행계획 idx_department <-> idx_department_created_at 실행계획이 각각 비슷할 것이라고 예상했는데, 강의에서는 idx_created_at과 두 개의 멀티 컬럼 인덱스 idx_created_at_department, idx_department_created_at 가 비슷하다는 것을 알 수 있었습니다! 이유가 궁금하여 질문 남겨봅니다 !

  • sql
  • mysql
  • dbms/rdbms
  • query-tuning
dongdong2 댓글 2 좋아요 0 조회수 60

JWT토큰 발급 시, subject 값을 다양하게 넣어서 여러 개의 토큰을 만드는 이유

해결됨

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

안녕하세요, 강사님 🙂 덕분에 코프링을 빠르게 배우고 있어 감사드립니다! 영상 8:20 경, JWT 설명 중 withSubject() 의 값으로 email 만 넣는다던가, name 만 넣어서 구현한다고 말씀주셨습니다. 고민을 해봤지만 여러 개의 Subject 를 만드는 이유가 궁금해서 질문드립니다. 상황 예시와 함께 답변해주시면 감사드립니다!!

  • kotlin
  • mysql
  • mongodb
  • kafka
  • redis
종혁 댓글 2 좋아요 0 조회수 49

인기 태그

인프런 TOP Writers

주간 인기글