묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 데이터베이스 완전정복 [설계편]
논리적 삭제 적용시 INDEX 생성 전략
안녕하세요 논리적 삭제를 위한 컬럼 적용시 해당 테이블에서 조회할때 조회 조건에 항상 deleted_at 컬럼이 포함될거 같은데요 그러면 INDEX생성에 반영해주는게 좋을까요?
-
미해결김영한의 실전 데이터베이스 - 기본편
인덱스를 활용하여 검색할 때 궁금한 점이 있습니다.
sellers와 items 테이블이 있을때두 테이블을 조인한다고 할때만약 items에 seller_id가 외래키로 잡혀 있지 않을 경우select * from items i join seller s on i.seller_id = s.seller_id이렇게 조인하면 풀스캔 조인이 일어나는 걸까요?추가적으로 select * from items i join seller s on i.seller_id = s.seller_idwhere s.seller_id = '행복상점'과select * from items i join seller s on i.seller_id = s.seller_idwhere i.seller_id = '행복상점'이렇게 두 쿼리를 실행 할떄 첫번째 쿼리는 인덱스를 활용해 검색을 하고 두번째 쿼리는 테이블 풀스캔을 해서 검색할까요?
-
해결됨김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
이미 개발이 끝난 프로젝트에서도 용어사전이 필요할까요?
강의 도중 용어사전에 대해 나왔는데 현재 프로젝트가 이미 끝나서 배포가 된 상황인데 지금이라도 용어사전을 만드는게 나을까요...?
-
미해결김영한의 실전 데이터베이스 - 기본편
인덱스 사용에 대한 질문이 있습니다!
MySQL 8.x 버전에서 다음과 같이 두 개의 인덱스를 생성했습니다.CREATE INDEX idx_items_price ON items (price); CREATE INDEX idx_items_price2 ON items (price DESC); 이 상태에서 아래 쿼리를 실행하면,SELECT * FROM items WHERE price BETWEEN 50000 AND 100000 ORDER BY price DESC;처음에는 possible_keys에 두 인덱스가 모두 나타나고, 옵티마이저가 idx_items_price (오름차순 인덱스)를 backward index scan으로 사용합니다. 이후에는 몇 번 실행 후에는 possible_keys에 idx_items_price2 (내림차순 인덱스)만 나타나고 이 인덱스가 쿼리에 사용됩니다.이런 현상이 발생하는 원인이 옵티마이저가 통계 정보를 수집하고 점차 최적화되어 인덱스 선택이 변경되는 것인지 궁금합니다. 그리고 한 번 최적화가 이루어진 후에는 idx_items_price2 인덱스를 계속 사용하는 것이 보장되는지, 아니면 나중에 다시 변경될 가능성도 있는지도 알고 싶습니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
트랜잭션 락 질문있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님! 강의 잘보고 있습니다🙂트랜잭션 강의를 듣고나니 mysql에서 table에서 트랜잭션관리 + lock이 필요함을 이해했습니다. 근데 이 강의를 듣고나니 헷갈리는게 고급1편강의에서 lock(reentrant lock, synchronized, cas, 비관적락 같이 임계영역을 보호하는 것) 과 헷갈려 질문하게 되었습니다.먼저 executor패키지 같은 멀티스레드 경우는 당연히 여러 사용자의 요청을 동시에 처리해야하니 필수적이라고 이해되는데 문제는 lock관련 부분이 헷갈리기 시작했습니다ㅠㅠ 일단 이런 애플리케이션 단의 lock들(reentrantlock synchronized cas 비관적락)은 서버가 여러대 A,B,C서버가 되면 각각의 서버에서만 lock을 관리해서 A서버의 a1스레드 출금로직 과 B서버의 b1스레드 출금로직이 겹칠 수 있다고 하더라구요! 그래서 애플리케이션에서 각 서버에 lock을 걸었어도 mysql단의 lock이 필수적이다. 라고 이해했는데 이러면 애플리케이션단에서 lock들이 존재하는 필요성이 사라져서 의문입니다..ㅠㅠ 그냥 db단에서만 걸어주면 충분하지 않나요?? 어차피 걸어도 서버 분산화가되면 소용없는거 아닌가요..? 그래서 찾아본 해결방안이 애플리케이션 java단의 출금메서드에 @Transactional을 걸고 관련 repository메서드들에 @Lock(PESSIMISTIC_WRITE)를 걸면 SELECT --- FOR UPDATE가 걸려서 db 단에서 lock이걸린다.reentrantlock같은건 쓰지 않아도 된다.로 이해했는데 맞을까요? 그렇다면 이러한 lock들은 단일서버에서만 통하니 실무에선 잘 사용하지 않는것인지...배운지식들을 합치니까 헷갈리기 시작하네요😇😇강사님께선 어떻게 하시는지 궁금합니다!!!긴 질문 읽어주셔서 감사드립니다🥰
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
MySQL Workbench 다운로드 실패 이슈
2025년 10월 4일 기준 MySQL Workbench 최신 버전인 8.0.43 버전 다운로드 시 크롬에서 다운로드 실패하는 이슈가 있네요!저는 Archives에서 8.0.42 버전을 다운받으니 정상적으로 받아서 설치할 수 있었습니다.혹시 다른 수강생분들도 비슷한 이슈 겪으실까 싶어 글 남깁니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
list, json 컬럼은 지양하나요?
관계형 DB에서도 데이터로 list, json이 가능하게 되는것 같던데... 실무상 거의 안쓰는 건가요?이걸 이용하면 쌤이 말씀해주시는 룰에 안맞게 되서, 일단은 피하면서 이것저것 연습해보는 중인데, 좀 갑갑하네요;; 교과서적으로는 피하는게 답이겠지만, 실무상으로도 피해야는 걸까요?
-
미해결Real MySQL 시즌 1 - Part 1
14분44초에 쿼리 질문드립니다.
애플리케이션단에서 범위조건 사용할때 2024-01-02 00:00:00 값을 어떻게 넘겨야줘야되나요? 말씀하신 내용 토대로 보면라스트 finished_at : 2024-01-01 00:00:02id : 8두가지정도만 넘길수 있을꺼 같은데요 그래서 애플리케이션 파라미터는 두가지값남 넘기고 처리 해야되지 않나 싶어서 여쭤봅니다. 그래서 해당쿼리로 날려도 상관 없을지 질문드립니다. SELECT * FROM posts WHERE (created_at < '2024-01-01 00:00:02') OR (created_at = '2024-01-01 00:00:02' AND id < 8) ORDER BY created_at DESC, id DESC
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
MYSQL 코드 질문
수업 외 질문을 가져와서 죄송합니다만 간략하게 한가지만 여쭙고 싶습니다. 이 Overlapping 과 Complete 을 동시에 만족하는 코드를 3개의 Table 을 통해서 구현할때 Trigger 를 쓰지 않고도 구현할 수 있나요? (단순히 Null, Check, IsStudent, IsFaculty 등을 이용해서요)
-
미해결김영한의 실전 데이터베이스 - 기본편
문제와 풀이 3번 질문입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님! 내부조인 문제와 풀이 3번에서"고객별" 총 구매액이니까 group by를 u.user_id로 해야하는 것이 아닌가요??!u.name으로 하면 강의에는 데이터가 적어서 상관없지만 실무에서 동명이인이 있는 경우 합쳐진 결과가 나올 것 같아 건의드립니다!!u.name으로 하신 이유가 궁금합니다!!강의 잘보고있습니다 감사합니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
특정 컬럼 정렬시, 한글이 숫자와 영문 다음으로 정렬이 되는데, 한글이 우선적으로 정렬되게 할때, 콜레이션을 사용하는 것이 권장되나요?
한글이 영어,숫자 보다 먼저 정렬되도록 하고 싶습니다.해당 컬럼에는 한글이 주로 많이 있습니다.오름차순 정렬시한글(가나다),영문/숫자/그외문자 순으로정렬현재 사용하는 것은쿼리단에서 정규식을 이용해서 한글을 우선순위를 높여서정렬을 시키는데 뭔가 비효율적인것 같습니다.콜레이션을 변경하면 가능할까요?콜레이션을 변경하는 것을 추천하나요?그렇다면 어떤식으로 콜레이션을 적용하는게 좋을까요?해당 컬럼에만 적용하기? 쿼리에서 정렬에 콜레이션을 명시하는 방법?어떤 방법을 권장하나요?콜레이션을 임의로 변경 시 문제점이나 유의사항이 무엇이 있을까요?참고로 mysql8 사용중이고,utf8mb4_ko_0900_as_cs 으로 변경을 고려중입니다.해당 컬럼은 영어,숫자,한글이 들어가고, 주로 한글이 많습니다. 그리고 유니크한 컬럼입니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
ORDER BY '이름' 과 ORDER BY 이름
ORDER BY '이름' 으로 정렬을 하면 의도대로 정렬이 안되고, ORDER BY 이름 또는 이름 으로 정렬을 하면 의도대로 실행이 되는데 무슨 차이인지 잘 모르겠습니다ㅠ '이름' 실행결과 이름 또는 이름 실행 결과
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
정규형대해서
1정규형부터 bcnf까지 강의 잘 들었습니다.그런데.. 궁금한 것은 기본키를 자연키가 아닌 대체키로 한다고했을 때, 그때도 제1정규형부터 bcnf까지 똑같이 그 개념이 적용되는지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
설치 후 시스템 설정에서 MySQ 메뉴에서 active instance
설치 후 시스템 설정에서 MySQ 메뉴에서 active instance를 유지하고 빨간색 초록색 왔다갔다 하면 어떻게 해야하나요?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
외래키사용
영한님 안녕하세요. 실무에서는 외래키가 테이블간에 관계를 끈끈하게 해서 잘 사용을 하지않는걸로 알고있습니다. 강의를 보면 테이블간에 유연한 관계를 두는것이 좋은 설계라고 하시던데 이 부분에 대해서는 어떻게 생각하시는지 궁금합니다~!
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
1:N 에서의 연관 엔티티 필요성
안녕하세요! 수업 너무 잘 듣고 있습니다. 연관 엔티티는 1:N 관계에서가 아니라 N:M 관계에서만 필요하다고 알고 있으면 될까요 ?아니면 상황에 따라서는 1:N 에서도 연관 엔티티를 필요로 하나요 ?
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
Store 엔티티를 추가했을 때의 관계
안녕하세요 영한님!강의를 들으면서 쇼핑몰 요구사항을 조금 더 확대해서 직접 모델링해보고 있습니다. (Store, Delivery, ...)엔티티를 분류하고 개념적 모델링, 논리적 모델링을 진행하면서 몇 가지 궁금한 점이 있어서 질문드립니다. 현재 강의에서는 Order - OrderItem - Product 관계가 존재했고,만약 Store와 Product 사이에 "무엇"을 등록한다 라는 관계가 존재한다면,Order - OrderItem - Product - Store 이렇게 관계가 형성될 것 같습니다. 질문 1. Order와 Store 관계Order와 Store 사이에, "어디에서" 주문한다 라는 관계가 있다고 볼 수 있는지 궁금합니다.(비즈니스 적으로 의미가 있는지에 따라 관계 여부를 결정하는게 맞을까요?) 질문 2. 만약에 관계가 존재한다고 생각하면 Order와 Store를 직접적으로 관계를 맺어주는게 좋을지, 아니면 그래프 탐색을 통해 관계를 참조하는게 좋을 지 궁금합니다.사실 Order - OrderItem - Product - Store 순으로 모두 Join 하면, 직접적인 연관관계를 맺지 않아도 원하는 데이터를 조회할 수 있을 것이라고 생각하는데요. 만약에 Order와 Store만으로 구성된 화면이 존재하거나, Store 정보를 바탕으로 Order를 필터링 해야한다면, Order에 Store의 식별자를 가지고 있으면 편하게 조회할 수 있을 것 같더라고요.다만, 이렇게 되면 화면이나 Api에 의존적이게 모델링되는 것 같은데, 이러한 설계 방식이 괜찮은 방식인지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
간단한 오타 제보
항상 잘 듣고 있습니다서브쿼리 pdf 문제 3번from절에 별칭 o가 빠져있네요case문 pdf 문제 4번문제 요구사항에 fashion_orders가 빠져있습니다
-
해결됨데이터베이스를 결합한 Unity 실전 게임 만들기
유니티 PUN2 아니면 UnityNetCode
유니티를 이용한 파이어 베이스 연동은 잘들었고 별점도 최고 점수를 드렸습니다.Pun2 포톤네트워크나 UnityNetcode로 멀티 게임을 만들면서 FireBase 연동 해서 랭킹 이라던지 킬수 저장 이런 것의 영상강의를 해주셨으면 합니다.
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
pk 현대적인 설계관련해서 궁금한게있습니다~
안녕하세요. 영한님 현대적인 설계는 대리키를 PK 로 두라고 하셨습니다.그 이유는 성능적인 측면으로 봤을때 자연키를 PK 로 두면 중간삽입이 자주 발생하여 페이지 단편화가 발생한다고 하셨습니다. 그리고 대리키로 AUTO-INCREMENT 를 주로 사용하시던데 일자-순번을 대리키로 사용해도 되나요? 등록된 일자와 그 일자의 순서에 따른 순번으로 PK 를 따는것도 괜찮은 방법인지 궁금합니다.