묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이 [데이터분석/과학 Part1]
강의 내 연습문제 유형 관련
강사님, 이전 강의들도 너무 유익하게 듣고 좀 더 심화된 학습이 필요하겠다고 생각하던 찰나에 하루 전에 중급 쿼리 강의가 업데이트되어 서둘러 결제했습니다.마침 쿼리테스트를 준비하고 있는데 핵심만 쏙쏙 뽑아주는 강사님의 코딩이 저한테 적합하다고 생각이 많이 들었거든요. 먼저 좋은 강의 제공해주셔서 감사합니다.다른게 아니고, 강의 내에 연습문제들에 관련된 질문인데요!준비해주신 연습문제가 AARRR이나 AB테스트와도 관련성이 있는지 객관적으로 판단하기가 어려워 여쭤봅니다.
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
SQL 튜닝에 대한 사례나 Best Practice 등을 모은 자료를 알려주실 수 있나요?
안녕하세요 선생님강의 잘 듣고 실무에서 배운 대로 인덱스를 좀 더 적극적으로 사용하려고 하는데, 평소에 깊은 고민하지 않다가 이제 해보려고 하니까 많이 고통스러운 시기를 지나고 있는 것 같습니다. 혹시 선생님께서 튜닝과 관련하여 도움을 받았거나, 혹은 추천할 만한 자료, 저서, 사이트 등이 있으시면 추천해주실 수 있으실까요? 좀 더 다양한 사례를 보면서 인덱스에 익숙해지고 싶습니다. 감사합니다.
-
미해결[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
중고급 SQL과 실전 데이터 문의
안녕하세요. 다음 코스인 중고급SQL에서는 101 문제와 풀이가 있다고 하는데 문제는 저자분께서 직접 고안하신 건가요 아니면 다른 플랫폼을 이용하나요?
-
해결됨Real MySQL 시즌 1 - Part 1
7)select for update 강의에서 질문
안녕하세요 강사님 gpt o1에게 물어보다가 질문이 생겼습니다.read committed 상태일 때 select for update를 쓰면 해당 statement가 끝나면 lock이 풀린다는데 이는 잘못된거지요?
-
미해결실무형 데이터 분석을 위한 핵심 SQL
DuckDB API 사용시 Connection Error가 발생합니다.
실습 코드를 순서대로 진행하니 아래와 같은 에러가 발생했습니다.*********************확인해보니 3번째 셀에서 duckdb를 연결하고%sql duckdb:///duckdb.db 그 아래에서 다음과 API로 연결을 시도하면 계속 에러가 발생합니다.duckdb_con = duckdb.connect("duckdb.db") **********************그래서 노트북 세션을 초기화하고 duckdb.db 파일을 삭제하고 3번째 셀을 실행하지 않고 duckdb API로 바로 연결하니 그때서야 제대로 연결되었습니다.
-
미해결데이터 분석 SQL Fundamentals
""와 ''의 차이가 궁금합니다.
안녕하세요. left join 실습을 하던중에, 궁금한점이 생겨서 질문드립니다. 아래의 코드로 실습할때에는 마드리드에 살고있는 고객정보를 잘 가져오는데 select c.contact_name , o.order_id , o.order_date , o.employee_id , o.ship_via from nw.customers c left join nw.orders o on c.customer_id = o.customer_id where c.city = 'Madrid'아래의 코드로 변경하여 실행하였을 때에는 에러가 나서 데이터를 가져오지 못합니다.두개의 차이가 무엇인지 궁금합니다.select c.contact_name , o.order_id , o.order_date , o.employee_id , o.ship_via from nw.customers c left join nw.orders o on c.customer_id = o.customer_id where c.city = "Madrid"답변 감사합니다.
-
해결됨Real MySQL 시즌 1 - Part 1
12강. LEFT JOIN 사용 방법 준수 5:42
안녕하세요 강의 잘 듣고 있습니다.강의 내용 중 오른쪽 쿼리에서 LEFT JOIN이 불필요하게 들어가서 쿼리들에서 LEFT JOIN을 제거하는게 쿼리 성능에 도움이 된다고 하셨는데요.LEFT JOIN 대신 INNER JOIN을 사용하는 것으로 이해하는게 맞을까요? 제거하라하면 JOIN 자체를 제거하라는 의미인지 헷갈려서 질문 남기게 되었습니다. 감사합니다.
-
해결됨Real MySQL 시즌 1 - Part 1
6강. Top N 데이터 조회와 관련해 질문있습니다.
안녕하세요. 강의 마지막에 카테고리별 조회수가 가장 높은 3개 기사를 추출 하는 쿼리 소개해 주셨는데요. 관련해서 질문 있습니다. Q1) 만약 categories 테이블에 id가 1,2,3인 데이터가 있다면 SELECT FROM WHERE category_id = 1 ORDER BY LIMIT 3SELECT FROM WHERE category_id = 2 ORDER BY LIMIT 3SELECT FROM WHERE category_id = 3 ORDER BY LIMIT 3이렇게 3번의 서브쿼리가 실행되고 각 결과를 전부 Union해서 최종 결과를 반환하게 되는건가요?Q2) LIMIT 3을 제거했을 때 내림차순 정렬이 안된 상태로 데이터가 반환되는데요. 그 이유가 뭔지 알 수 있을까요?
-
해결됨Real MySQL 시즌 1 - Part 1
5강에서 사례로 언급하신 DETERMINISTIC 예제에 대해 질문있습니다.
5강 2분50초쯤에 '사용자의 수를 가져오는 함수'를 예시로 설명해 주셨는데요.- 이 Stored Function이 실행되는 순간에도 사용자의 가입은 계속된다.- 그로 인해 이 Stored Function은 호출할 때마다 결과값이 달라질 수도 있다.- 하지만 이러한 사용자 테이블의 레코드가 달라지는 것도 입력이 달라지는 것이라고 생각하기 때문에 MySQL서버에서 SELECT를 포함해서 하나의 Statement는 반드시 시작 시점의 스냅샷을 보도록 구현되어 있다.- 그래서 MySQL서버에서 실행되는 쿼리 문장 하나는 동일한 데이터 상태를 보게 된다.- 따라서 하나의 문장 내에서는 Stored Function이 여러번 호출되더라도 테이블의 데이터는 해당 시점의 스냅샷을 보기 때문에 함수의 인자만 동일하다면 입력이 달라지지 않는 것으로 본다.Q) DETERMINISTIC으로 정의된 함수에 대해서 스냅샷을 바라보도록 설정돼 있고, 이로 인해 함수가 참조하는 데이터(인자)가 변경돼도 그 외 나머지 입력값이 동일하다면 동일한 결과값을 반환하게 된다는 내용이 맞을까요?
-
해결됨Real MySQL 시즌 1 - Part 1
deternmistic 질문
안녕하세요deterministic 관련해서 궁금증이 있어 질문드립니다. 그럼 mysql stroed function을 생성할때 무조건 deterministic 으로 생성을 해야하는지요??예를들면, 함수 내에는 파라미터값을 받아서 select 결과값을 도출하는 가령, id값등등 있다고 가정하겠습니다. 그럼 select * from test where 함수('value') 등으로 넣어서 값을 도출받아 where 조건에 걸수있다고 가정해보면non deterministic 일 경우 fullscan을 탈거같은데요. 결론적으로 , 모든 함수를 전부 deterministic 으로 명시를 해줄경우 단점이 무엇인가요?? 감사합니다.
-
미해결데이터 분석 SQL Fundamentals
where in절 서브쿼리
where in절에서 서브쿼리를 사용하면 서브쿼리의 결과로 중복되는 컬럼이 유니크 하게 처리된다 하셨는데 이거는 in절의 특징인가요?
-
미해결Real MySQL 시즌 1 - Part 1
1강 CHAR타입에 대해 질문드립니다
안녕하세요. 우선 이렇게 좋은 강의 해주셔서 감사합니다. 강의를 듣다가 궁금한 부분이 있어 질문드립니다.Q1) 10:00분 경에 "CHAR여도 utf8mb4같은 가변길이 캐릭터 셋을 사용하면 때로는 예약된 빈 공간이 없을 수 있다"라고 말씀해 주셨는데요. 제가 강의를 듣고 이해하기로는 '1~4byte값을 가질 수 있다는 가변길이 캐릭터 셋' 성질 때문이 아니라 '문자 하나당 크기가 1byte를 초과했기 때문에' 예약된 빈 공간이 없어지는 걸로 생각했습니다. 즉, 가변길이 캐릭터 셋인 utf8mb4가 아닌 하나당 크기가 3byte인 어떤 고정길이 캐릭터 셋을 이용하더라도 동일하게 예약된 빈 공간이 없을꺼 같은데 혹시 제가 이해한게 맞을까요?Q2) 마지막 내용 정리하시는 부분에서 "인덱스된 컬럼이라면 CHAR가 효율적일 가능성이 더 높다"고 말씀해 주셨는데 어떤 이유로 인덱스된 컬럼에 CHAR가 더 좋을 가능성이 높은건지 알려주실 수 있으실까요?
-
미해결견고한 결제 시스템 구축
동시성 제어 (optimistic locking) 재시도 부분 질문 드립니다.
동시성 제어를 optimistic 방식으로 구현을 하시고 retry 를 직접 구현하셨느데요- 혹시 직접 구현하지 않고스프링 @Retryable 을 이용안하신 이유가 있으실까요? @Retryable을 하면 더 간단하게 재처리가 가능할것 같아서요~!
-
해결됨장래쌤과 함께하는 쉽고 재미있는 SQL 이야기
테이블 생성 후 조건 수정 방법
안녕하세요 View 로 임시테이블 생성에 관한 파트 듣고 질문드립니다 View로 생성하는것과 Create 테이블명 ( ~ 이렇게 테이블 생성하는것의 차이점이 있을까요? Create 테이블 > 이렇게 해서 테이블 생성한 경우 수정이 필요할 때 어떻게 하는지도 궁금합니다.
-
미해결견고한 결제 시스템 구축
결제 복구의 세부 과정을 병렬로 처리한 이유가 궁금합니다
안녕하십니까 여정민 강사님! 강의 도중 궁금한 점이 있어 질문 드리고자 합니다. 질문은 12:32 초의 코드를 보면package com.example.paymentservice3.payment.application.service import com.example.paymentservice3.payment.application.port.`in`.PaymentConfirmCommand import com.example.paymentservice3.payment.application.port.`in`.PaymentRecoveryUseCase import com.example.paymentservice3.payment.application.port.out.* import org.springframework.scheduling.annotation.Scheduled import reactor.core.scheduler.Schedulers import java.util.concurrent.TimeUnit class PaymentRecoveryService ( private val loadPendingPaymentPort: LoadPendingPaymentPort, //결제 처리가 완료되지 않은 상태의 결제를 조회 하기 위해 private val paymentValidationPort: PaymentValidationPort, //결제 유효성 검사 private val paymentExecutorPort: PaymentExecutorPort, //결제 승인 요청 private val paymentStatusUpdatePort: PaymentStatusUpdatePort //결제 상태 업데이트 ) : PaymentRecoveryUseCase { @Scheduled(fixedDelay = 180, timeUnit = TimeUnit.SECONDS) override fun recovery() { loadPendingPaymentPort.getPendingPayments() .map { PaymentConfirmCommand( paymentKey = it.paymentKey, orderId = it.orderId, amount = it.totalAmount() ) } .parallel(2) .runOn(Schedulers.parallel()) .flatMap { paymentValidationPort.isValid(it.orderId, it.paymentKey).thenReturn(it) } .flatMap { paymentExecutorPort.execute(it) } .flatMap { paymentStatusUpdatePort.updatePaymentStatus(PaymentStatusUpdateCommand()) } } }위와 같이 작성되어있는데 여기서결제 유효성 검사결제 승인 요청결제 상태 업데이트위 3가지 기능 수행을 병렬로 처리한 이유가 궁금합니다.강의에서 언급된 이유로는 "각 작업 간의 수행 순서가 중요하지 않은 작업들은 병렬로 처리하여 전체 처리 시간을 단축" 이라고 말씀하셨습니다. 제가 생각했을 때는 유효성 검사에 성공하면 결제 승인을 요청하고 결제 승인 요청에 대한 결과를 바탕으로 결제 상태 업데이트가 수행이 되어야 한다고 생각되어 병렬처리를 하는 부분에 있어 타당함을 잘 모르겠습니다. 제 짧은 견해로는 결제 유효성 검사결제 승인 요청결제 상태 업데이트위 순서를 지켜 수행되어야 한다고 판단하였습니다. 이 부분에 대해서 강사님의 생각이 궁금합니다. p.s. 좋은 강의를 제공해주셔서 감사합니다. 여태 수강한 강의 내용들이 모두 새로워 덕분에 공부할 부분을 많이 찾게 되어 감사드립니다. 앞으로도 좋은 강의를 만들어주시면 많은 도움이 될 것 같습니다 화이팅!
-
미해결데이터 분석 SQL Fundamentals
exists 와 in 차이
안녕하세요, Where절 서브쿼리 사용 시 유의사항 part 듣다가 질문드립니다 앞전에 exists 사용법에 대해 나오지 않아서 이 파트 들으면서 처음 봤는데요! 비상관 서브 쿼리 - in 을 사용해서 설명상관 서브쿼리 exists 를 사용해서 설명해주셨는데 in을 사용한 비상관 서브쿼리에서도 상관서브쿼리처럼 메인쿼리의 연결 컬럼을 넣어줘도 작동이되어서요 그럼 비상관 서브쿼리랑 상관 서브쿼리랑 차이가 없는것처럼 보여서 헷갈립니다 ㅠ 그리고 언제 in 을 사용한 서브쿼리를 활용하는지, exists 를 사용하는지 궁금합니다 from ( 서브쿼리 ) 이렇게 해줘도 될것같은데 어떤 차이인지 해서요!
-
해결됨Real MySQL 시즌 1 - Part 2
시퀸셜하게 증가하지 않는 PK의 insert성능도 문제가 있을까요?
좋은 강의 제공해주셔서 감사합니다!강의를 듣다보니 의문점이 하나 생겼는데요. 에피소드 14의 시퀸셜하지 않은 UUID사용시 범위 검색의 조회 효율성 문제를 언급해주셨는데요 데이터 삽입시 인덱스가 리밸런싱되거나 리프노드의 실제 데이터 위치가 이동하는 문제가 발생할수도 있을까요?
-
해결됨실무형 데이터 분석을 위한 핵심 SQL
만약 데이터 웨어하우스에서 분석한 내용을 다시 고객에게 서빙하고 싶다면 어떻게 하나요?
안녕하세요 한기용 강사님! 궁금한 내용이 있어 질문드려요 OLTP에 저장되어 있는 데이터를 OLAP로 가져와서 내부 직원들이 테이블을 분석하던 중 고객들에게 제공하면 좋을 새로운 데이터(예: 통계 데이터 등)가 재가공된다면 이 데이터를 어떻게 서빙하나요?재가공된 데이터를 OLTP 데이터 저장소(Postgres 등)에 다시 저장해서 이를 API에 연결해서 서빙하는지 궁금합니다.
-
해결됨[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
(맥환경) workbench 이용할 때 패스워드 입력 안해도 자동으로 활성화 가능해져요..
본문제목 그대로 워크 벤치 이용할 때, 항상 패스워드를 입력한 후 활성화 되는 것으로 알고 있었는데, 현재 패스워드 입력 안하고 그냥 클릭만 해도 활성화됩니다. 보안상으로 좋지 않은 것 같은데, 혹시 이런 경우 어떻게 변경이 가능할까요? 오랜만에 mysql을 공부하는데 몇년 전에는 항상 패스워드 입력했던 것 같은데 이번에 새로 깔아보니 패스워드 입력 안해도 실행이 되어 불안합니다. 참고로 저는 맥 환경에서 사용하고 있습니다.
-
미해결처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
db.movies.aggregate() 질문
MongoDB Aggregateion 기본 명령 이해하기1 수업 3분쯤에 db.movies.aggregate([{$match:{year:1995}]) 문법을 그대로 따라 쳤는데, 에러같은건 전혀 나지 않고이 화면이 나옵니다. movies콜렉션에 데이터가 아무것도 안들어있는건가요?? 뭐가 문제인건지 모르겠습니다 ㅠㅠ 이것저것 찾아보니 제가 설치한 movies 컬렉션에는 데이터가 0건인거 같은데 왜 이런건가요? 강의에서 하라는대로 그대로 따라했습니다 ㅠ 몇 번 삭제하고 다시 해봐도 똑같이 데이터가 0건인거같아요