묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
- 
      
        
    미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]19강 질문1. 유저 컨트롤러에서 jdbc를 설정해준적이 없다고 하셨는데 여기서 jdbc클래스설정 이라는게 무슨말인가요?jdbc에 대한 생성자를 말하는건가오?생성자를 설정안해 줘서 탬플릿을 설정안해준거라면 userservice나 userRepositry 모두 다 템플릿에 대해 설정 안해줬는데 저 둘은 스프링빈도 아닌데 어떻게 jdbc템플릿 가져온건가요 
- 
      
        
    미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)특정 부서에서 최대 연봉을 가진 사용자 조회 sql 쿼리 질문안녕하세요, 좋은 강의 감사합니다. 제공해 주신 쿼리에 대해 질문이 있는데요,제 생각에는 아래 쿼리가 특정 부서에서 최대 연봉을 가진 사용자를 조회하는게 아닌,전체 부서에서 최대 연봉이 x 라고 하면,세 부서에서 그 값이 있으면 출력하는 문인것 같은데,제가 어느 부분에서 헷갈린 건지 알려주시면 감사하겠습니다.SELECT * FROM users WHERE salary = (SELECT MAX(salary) FROM users) AND department IN ('Sales', 'Marketing', 'IT'); SELECT MAX(salary) FROM users 는 users 테이블의 최대 salary 를 가져오는것이고,괄호 밖의 department In (...) 은 부서 세개,그리고 salary = (SELECT MAX ...) 와 함께 저 salary 에 해당 하는 users 가져오는 것이 아닌가요? 제가 sql 초보라 양해 해주시면 감사하겠습니다 ... 
- 
      
        
    미해결비전공자도 이해할 수 있는 Docker 입문/실전스프링부트,Mysql작업시 빌드안녕하세요 강의 듣다 궁금한 점이 생겨서 질문 남깁니다! 스프링 부트,mysql 을 이용하여 프로젝트 작업 진행하기 위해 작업 진행전 docker로 초기 환경 세팅을 하고 두가지 동시에 띄우는 작업을 했습니다! 도커 연결전에는 IDE에서 run버튼을 눌러 작업 확인을 했었는데, 지금은 빌드 하고, compose up해서 확인을 해야하는걸까요? run버튼 누르니까 에러가 뜹니다. 
- 
      
        
    미해결[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)여유가 되신다면 mmorpg의 꽃, 레이드관련 강의 요청드려도 될까요용가리가 브레스 쾅발구르기 낙석 쿠과광마지막 발악패턴 비늘탄막 슈슈숭난관을 넘어 던전에서 쌓여가는 우정!상상으로도 가슴뛰는 컨텐츠인데너무 무리한 부탁이겠지유 
- 
      
        
    해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기mutableListOf강의를 들으면서 코틀린 문법도 같이 병행하면서 듣고있는데 이부분 질문을 하고 싶습니다!mutableListOf 로 감싸줘서 넣어져야지 코드가 오류 없이 되는지 궁금합니다. jpa 특성상 그런건가용? 
- 
      
        
    해결됨인프라공방 - 그럴듯한 서비스 만들기validbitvalid bit 1은 메모리에 페이지가 존재하는것 아닌가요? 
- 
      
        
    해결됨비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)created_at 에 index 거는것과 지속적인 데이터 증가안녕하세요, 좋은 강의 감사합니다. created_at 에 index 를 걸어서 order by 와 같은 문제를 해결하는 것을 보았는데요, 데이터가 지속적으로 증가하고 밀리초 단위로 들어오는 created_at 이 있다면, 이것들을 모두 다 인덱스로 걸어도 괜찮은건가요?? 데이터가 계속 커지면 어떻게 처리하나요?? 
- 
      
        
    미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)WHERE A OR B 에서 인덱스 걸기안녕하세요, 좋은 강의 제공해 주셔서 감사합니다.[실습] WHERE문에 인덱스를 걸기 vs ORDER BY문에 인덱스를 걸기 강의 에서 질문이 있습니다. 만일 created_at 과 department 가 AND 가 아닌 OR 조건이 주어지면, 데이터 엑세스가 더 많은것에 인덱스를 거는것이 좋을까요?? SELECT * FROM users WHERE created_at >= DATE_SUB(NOW(), INTERVAL 3 DAY) OR department = 'Sales' -- AND 대신 OR ORDER BY salary LIMIT 100; 
- 
      
        
    미해결백엔드 개발자 성능 개선 초석 다지기인덱스 활용 질문인덱스를 걸때 카디널리티 수치를 확인해 높은 컬럼을 인덱스로 설정하라고 강의에서 들었습니다. 이에 궁금한 점이 몇가지 있습니다.Q1 : WHERE 절에 검색조건으로 사용되는 컬럼이 5가지라고 가정하면 가장 카디널리티가 높은 컬럼 1개만 인덱스로 걸어야 하나요?? 아니면 카디널리티가 높은 순서대로 묶어서 하나의 복합 인덱스를 만들어 주어야 하나요?? 차이점이 궁금하고 어떤 방식이 더 나은 방식인지 궁금합니다 Q2 : WHERE 절에 사용되는 검색조건인 컬럼 한개가 있다고 가정했을때 해당 컬럼의 카디널리티 수치가 낮더라도 인덱스를 만드는게 낫지 않나요? Q3 : Mysql의 경우 범위검색의 경우 B-Tree 인덱스를 사용한다고 알고있습니다 . 강의에서 만든 인덱스도 날짜이고 범위검색이니 B-Tree 인덱스를 사용한거 같습니다. 정확한 일치 검색의 경우 해시 인덱스를 사용할 수 있다고 들었습니다. 이때는 인덱스를 만들때 코드를 어떻게 써줘야 해시 인덱스를 만들 수 있나요? 
- 
      
        
    미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)질문이있습니다.제가 선생님 강의를보고테이블에 천만개의 데이터를 넣고 인덱스를 테스트하고있었는데요, 2가지 질문이 생겼습니다. 질문다음과 같이 익스플레인 에널라이즈를 하면 소요시간이 약 704ms 으로 나옵니다. 그런데 익스플레인 에널라이즈만 제거하고 다시 셀렉트를 하면 소요시간이 1.494로 증가하는데 단순 조회 쿼리와 익스플레인 에널라이즈 쿼리가 서로 다르게 동작해서 그런건가요? 분석때문에 에널라이즈쪽이 더 오래걸릴까 싶었는데 오히려 반대라서 왜 이런현상이 발생하는지 궁금합니다.-> Filter: ((reservation.userId = 389788) or (reservation.seatId = 50)) (cost=11192 rows=10272) (actual time=2.33..678 rows=10271 loops=1) -> Deduplicate rows sorted by row ID (cost=11192 rows=10272) (actual time=2.3..676 rows=10271 loops=1) -> Index range scan on reservation using idx_user over (userId = 389788) (cost=1.11 rows=1) (actual time=0.115..0.115 rows=0 loops=1) -> Index range scan on reservation using idx_seat over (seatId = 50) (cost=1038 rows=10271) (actual time=0.0497..2.77 rows=10271 loops=1) 질문제가 다음과 같은 쿼리에 인덱스를 걸며 테스트해보니복합인덱스 ( userId,seatId or reverse ) 는 전혀 인덱스를 활용하지않고 단일 인덱스를 각각 지정했을 경우에만 아래와같이 인덱스를 병합해서 사용하더라구요. 이렇게 속도를 절반으로 떨어뜨렸는데 아무래도 데이터가 천만개라 그런가 여전히 1초 이상의 시간이 소요되어서 선생님이 보셨을때 여기서 더 개선해볼 방법이 있는지 궁금합니다.where쪽을 건드려 보자니 둘중 하나라도 충족되면 가져와야하는 상황이라면 or 말고 다른건 떠오르질않았습니다.(에널라이즈는 시간이 1초 미만으로 나오지만 실제로 쿼리 돌려보면 소요시간 1.4초 이상으로 찍힙니다. ) CREATE INDEX idx_user ON reservation_entity(userId); CREATE INDEX idx_seat ON reservation_entity(seatId); SELECT `reservation`.`createdAt` AS `reservation_createdAt`, `reservation`.`updatedAt` AS `reservation_updatedAt`, `reservation`.`deletedAt` AS `reservation_deletedAt`, `reservation`.`id` AS `reservation_id`, `reservation`.`userId` AS `reservation_userId`, `reservation`.`concertId` AS `reservation_concertId`, `reservation`.`seatId` AS `reservation_seatId`, `reservation`.`status` AS `reservation_status`, `reservation`.`price` AS `reservation_price`, `reservation`.`concertName` AS `reservation_concertName`, `reservation`.`seatNumber` AS `reservation_seatNumber`, `reservation`.`openAt` AS `reservation_openAt`, `reservation`.`closeAt` AS `reservation_closeAt` FROM `reservation_entity` `reservation` WHERE `reservation`.`userId` = 389788 OR `reservation`.`seatId` = 50; -> Filter: ((reservation.userId = 389788) or (reservation.seatId = 50)) (cost=11192 rows=10272) (actual time=2.33..678 rows=10271 loops=1) -> Deduplicate rows sorted by row ID (cost=11192 rows=10272) (actual time=2.3..676 rows=10271 loops=1) -> Index range scan on reservation using idx_user over (userId = 389788) (cost=1.11 rows=1) (actual time=0.115..0.115 rows=0 loops=1) -> Index range scan on reservation using idx_seat over (seatId = 50) (cost=1038 rows=10271) (actual time=0.0497..2.77 rows=10271 loops=1) 
- 
      
        
    미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]강의 화면 출력이 되지 않는 현상강의 화면이 제가 들었던 기록들을 제외하고는 음성만 들리고 영상이 보이지가 않습니다. 혹시 해결방안 있을까요? 
- 
      
        
    미해결백엔드 개발자 성능 개선 초석 다지기프로젝트 적용하는데 어려움이 있어 질문드립니다.안녕하세요. 현재 프로젝트를 디벨롭하려고 수강한 학생입니다.현재 자바17버전을 사용하여서 프로젝트를 완료하였고 ngrinder에서 스크립트를 사용하기 위해 11버전으로 낮추었는데 프로젝트 코드의 많은 부분을 수정해야해서 17버전을 사용해서 적용할 수는 없을까요? 
- 
      
        
    미해결따라하며 배우는 MySQL on Docker프로덕션 환경에서 데이터 베이스 구성에 대하여.안녕하세요.좋은 강의 잘 들었습니다.한가지 궁금한 사항이 있습니다. local /dev / qa / staging 환경에서 아닌프로덕션 환경에서 mysql( 기타 kafka, redis ..) 을도커 컨테이너로 실행하여 서비스를 하는 추세 일까요? 어플리케이션 서버나 게임서버 등은이미지화 해서 도커 컨테이너로 실행 하는 걸로 들은것 같은데,데이터베이스나 메세지큐 같은 것들도 도커 컨테이너로 실행하여 서비스를 하고 있는지 궁금합니다. 회사마다 다르겠지만클라우드(gcp, aws, azure) 회사가 제공하는 PaaS ?? 를 이용하는 곳도 있을 것 같고,ec2 나 azure vm 에 직접 MYSQL 을 설치(docker 가 아닌)하여 서비스 하는 곳도 있을 것 같은데,강사님께서 근무하시는 게임회사나 기타 다른 회사들은 프로덕션 환경에서도 mysql 을 도커 컨테이너로 실행하여 서비스를 하시는지 궁금합니다. 대외비가 아닌 부분에서 답변해주시면 많은 도움이 될 것 같습니다.감사합니다. 
- 
      
        
    미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]31강 유저 정보 가져오기에서 질문 있습니다유저 정보를 가져올 때 orElseThrow를 사용하면 userRepository에 입력되어 있는 findByName이 Optional로 선언되어야 한다고 문구가 뜹니다!근데 Optional<User>로 바꾸면 UserServiceV2에 @Transactional public void deleteUser(String name){ User user = userRepository.findByName(name); if(user == null){ throw new IllegalArgumentException(); } userRepository.delete(user); }user의 타입을 User로 할 수 없다고 떠서 Optional<User>로 바꾸면 userRepository.delete(user)가 파라미터가 적절하지 않다고 뜹니다ㅜㅜ일단, 구현은 하고 싶어서 userRepository에 findByName은 User 타입으로 정의하고// 4. 유저 정보를 가져온다 if(userRepository.findByName(request.getUserName()) == null){ throw new IllegalArgumentException(); } else{ User user = userRepository.findByName(request.getUserName()); // 5. 유저 정보와 책 정보를 기반으로 UserLoanHistory를 저장 userLoanHistoryRepository.save(new UserLoanHistory(user.getId(),book.getName())); }bookService를 이렇게 바꾸었는데 상관없을까요?어떤식으로 해결하는게 맞을까요... 
- 
      
        
    미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)테이블에 기본키가 없을때강의를 듣다 궁금한 점이 생겨서 글을 남김니다.보통 테이블을 생성할때 당연하게 pk를 지정해 주었는데 pk가 없는 테이블도 생성을 하나요? 생성은 되는것 같은데 똑같이 테스트를 해보니 따로 정렬한는 기준이 없어서 그런지 id 7번을 2번으로 바꿔도 들어온 순서대로 위치가 맨 마지막에 있는것을 확인했습니다. pk가 없는 테이블도 있는지 있으면 성능이라던지 차이점이 뭔지 궁금합니다. 
- 
      
        
    미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)질문있어요!!!인덱스를 생성할때, 오름차순 - 내림차순도 설정할수있는데,날짜 기준으로 '최신 날짜 기준'으로 자주 조회하는 쿼리일 때,인덱스를 날짜 기준으로 내림차순으로 만들면 쿼리에 더 효과가 있는 걸까요?아니면 정렬 설정 상관없이 '옵티마이저'가 알아서 판단해서 조회를 하는 건가요?? 그리고강의 너무 유익하게 듣고있습니다. 늘 좋은 강의 감사합니다 
- 
      
        
    해결됨장래쌤과 함께하는 쉽고 재미있는 SQL 이야기여러 컬럼 중 null값이 아닌 값 가져오기안녕하세요 질문 드립니다! A 1 2 3 null 5 null null null 7 이렇게 A라는 항목에 한해서 9개의 컬럼이 있는데 중간 중간 null 값이 있는 경우 이전 값들 중 최근 값을 가져오게끔 하는 방법이 있을까요? 위 예시로, 빨간색 null 값은 3이 나와야되고 7 전의 null 값 3개에 대해서는 5, 5, 5 이렇게 나오게끔 하고싶습니다 
- 
      
        
    해결됨장래쌤과 함께하는 쉽고 재미있는 SQL 이야기누적 백분위 구하기 질문선생님 안녕하세요 쿼리로 누적 백분위 구하려고하는데 질문드립니다 A 10B 20C 30D 40E 50Sum: 150이렇게 있을때 상위 10%, 20%, 30% .. 등등에 속하는 개수는 몇개인지 구하려하는데요 예를 들어 150의 10%인 15를 만족하는 갯수는 전체 중 1개( A = 10) 20%인 30 을 만족하는 갯수는 전체 중 2개 (A와 B) 전체 중 100%는 5개 (A, B, C, D, E) 이런식으로 누적 백분위를 구하고싶은데 이렇게도 가능할까요? 그럼 A+B 값이 10% 에 드는지 20%에 드는지 A+B+C 값은 몇프로에 드는지 각각 case when을 써서 비교해보려고했는데 누적 합산을 A+B, A+B+C 이렇게 끊어서 비교하는 방법을 모르겠습니다 
- 
      
        
    미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지논 블로킹 방식의 동작 원리 이해가 어렵습니다.강의 교안의 논 블로킹의 정의와 책의 예제(setTimeout 함수를 이용해 작업 시간이 긴 함수를 백그라운드로 보냄)를 읽어 보면오래 걸리는 함수를 백그라운드로 보내는 것 같은데, 그 다음 설명을 보면일부 코드들이 백그라운드에서 병렬로 실행된다고 되어있어서 헷갈립니다. 위 내용을 바탕으로 제가 이해한 것은 작업 시간이 긴 함수, 일부 코드 모두 백그라운드로 전달작업 시간이 긴 함수는 태스크 큐로 전달되고 동시 작업이 가능한 일부 코드들은 백그라운드에서 병렬로 처리일부 코드들의 병렬 처리가 끝나고 나면 태스크 큐에 있는 (블로킹 방식의)작업 시간이 긴 함수 처리 인데 맞을까요? 
- 
      
        
    해결됨Real MySQL 시즌 1 - Part 1전체 count(*) 내용에 대해서 문의 드립니다.안녕 하세요..실제로 count(*) 때문에 고민이 많습니다.게시판 형태의 화면이 있는데요..데이터가 약 250만건 정도 입니다.조인된 테이블은 6개 이고요..테이블 6개를 조인 해서 보여주다 보니 검색 조건은 매우 많습니다.페이징을 20개씩 10페이지씩 보여주고 있는데요..강의 내용 대로 전체 count(*) 때문에 속도가 느립니다.전체 갯수를 소스 상에 써 놓고 테스트를 해보면 속도가 느리지 않거든여..강의를 보기 전에도 테스트 해본 결과 속도는 전체 갯수의 count(*) 문제 라고 판단 하고 있었는데요..시스템의 로우 갯수를 사용 하는 방법이나리눅스의 cron 으로 각 테이블의 갯수를 10분 단위로 입력 하는 것 등..여러가지 생각을 해보았으나..검색 때문에 포기 했습니다.검색을 하면 검색 결과에 대한 전체건수가 나와야 하는데..이건 실시간 아니면 파악할 수가 없으니까요..강의를 보면서 힌트를 얻고자 했으나..대략적인 건수..임의의 페이지 표기 통계 이용대략 이해는 됩니다만..만일 검색을 하게 되면..모두 사용 할 수 없는 것 아닌가요?강의 에서 얘기한 것들은 모두 아무런 조건이 없을 경우 이고..예를 들어 검색 조건이 10가지 정도 될 경우 어떤 조건으로 검색할 지 모르는 상황인데대략적인 건수를 표시할 수도 없고 임의의 페이지를 표시할 수도 없습니다.예를 들어 검색 조건 시 1개도 없는 경우도 있을 수 있는데..어떻게 대략적인 건수를 표시를 할 것이며..임의의 페이지를 표시 할 수 있을까요..검색결과가 1건도 나오지 않았는데 페이지를 1~10 까지 대략적으로 표시할 수는 없는 것 아닌가요?통계이용은 검색 시 더더욱 사용할 수 없고요..제시하신 방법으로는 문제가 해결 될 것 같지 않은데..제가 잘못 생각 하고 있는 걸까요?제 생각이 틀렸으면 좋겠습니다만..방법이 있을까요? 
