inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

강의 소스코드는 어디서 다운받을 수 있나요?

해결됨

트래픽 급증을 견디는 서버 시스템 설계 - Coupon 발급 서비스

강의자료 압축파일에 소스코드가 없고 PDF 강의안만 있습니다. 깃허브 주소도 알려주시면 감사하겠습니다.

  • java
  • kotlin
  • mysql
  • docker
  • spring-boot
  • kafka
  • redis
한종승 댓글 1 좋아요 1 조회수 11

힌트 적용에 대해서

미해결

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

운영중에 문제가 생기면 힌트를 강제로 사용하게 하거나 하지 않게 한다고 하셨는데 보통 이건 쿼리를 수정하는일이라 서버를 올렸다 내리는걸로 아는데 혹시 서버를 안내리고 쿼리 수정이 적용되는 방법이 따로 있나요?

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
안태승 댓글 0 좋아요 0 조회수 17

수료증 제공하나요?

미해결

김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)

이 강의 다 듣고나면 수료증 주나요? 입문편, 기본편 모두 완강하면 수료증 주는지 궁금합니다.

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
Noah Bhang 댓글 1 좋아요 0 조회수 40

조회 대상 행이 적을 때도 Using filesort 제거를 고려해야 하나요?

미해결

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

1. 인덱스로 이미 5~8행까지 좁혀진 결과를 정렬하는 경우에도 filesort를 주의해야 하나요? 2. 실무에서 "이 정도면 filesort를 신경 쓰지 않아도 된다"고 판단하는 기준(정렬 대상 행 수, 실행 시간 등)이 있다면 알려주시면 감사하겠습니다. 감사합니다.

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
슝스스 댓글 2 좋아요 0 조회수 62

PK를 AUTO_INCREMENT UUID를 UNIQUE로 하는것에 대해

미해결

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

질문이 있습니다 강의를 듣다보니 UUID를 써야겠다면 PK를 오토 인크리먼트 UNIQUE 를 UUID로 사용하라고 했는데 , 그리고 보안적인 측면으로 이야기하면서 오토인크리먼트는 유추 될수 있다 라고 하시면서 그러면 보안을 더 잘하는게 맞지 않냐는 말씀을 하셨습니다. 저도 말씀하신 생각과 같은데요 그런데 만약에 UUID와 오토 인크리먼트를 같이 쓰게되면 PK 값을 안보여주는 것도 이야기를 하셨는데 그러면 SELECT할때 WHERE 조건으로 UUID 즉 유니크 키를 사용하면 PK를 사용할때에 비해 이점이 줄지않나요? 그리고 문서 건수가 많아질수록 유니크 키 인덱스 부분도 쌓여서 비용이 쌓일거같은데 이부분이 궁금합니다.

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
안태승 댓글 2 좋아요 0 조회수 68

Jib 빌드가 83%에서 멈추는 문제 해결(windows 사용자)

해결됨

트래픽 급증을 견디는 서버 시스템 설계 - Coupon 발급 서비스

build.gradle.kts id("com.google.cloud.tools.jib") version "3.4.5" 기존 3.4.4에서 3.4.5로 변경한 후 빌드가 정상적으로 완료되었습니다. Jib 3.4.5 변경 사항 Fixed fix: address windows deadlock issue when determining docker environment info #4267

  • java
  • kotlin
  • mysql
  • docker
  • spring-boot
  • kafka
  • redis
하나콩 댓글 1 좋아요 1 조회수 53

pk를 auto increment로 하는것에 대해서

미해결

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

안녕하세요 질문이 있습니다. b+트리 강의를 들으면서 문득 생각이 나서 질문드립니다.웹개발을 하는 회사원인데요 저희 회사에서는 pk를 랜덤 UUID를 사용해서 pk를 사용하고 있는데 프로젝트를 하면 마이그레이션을 하거나 할떄 꽤 많은 양을 합니다 수십만건 또는 수백만건 정도를 하는데 이 pk를 auto increment로만 바꿔도 성능이 많이 개선이 되나요?

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
안태승 댓글 2 좋아요 0 조회수 61

트랜잭션 내 Redis I/O 에 대한 궁금한점

해결됨

트래픽 급증을 견디는 서버 시스템 설계 - Coupon 발급 서비스

안녕하세요, 강사님 강의 잘 듣고있습니다. 들으면서 궁금한 점이 한가지 있는데요, Redis 연산의 경우 이것도 I/O 작업일텐데 트랜잭션 내부에서 사용해도 되는것인지 궁금합니다. (ex HTTP Client 와 같이 I/O 작업의 경우에는 트랜잭션 내부에서 호출하는걸 지양하는것처럼..)

  • java
  • kotlin
  • mysql
  • docker
  • spring-boot
  • kafka
  • redis
감성코딩 댓글 1 좋아요 1 조회수 50

경쟁상태

해결됨

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

INSERT INTO users (name, email, age, city) SELECT '새 사용자', 'test메일', 25, 'seoul' WHERE NOT EXISTS ( SELECT 1 FROM users WHERE email = 'test메일' ); 이 쿼리를 처음에 설명해 주실 때 두 개의 프로세스가 동시에 데이터를 확인하고 삽입하려 할 때 경쟁상태가 발생할 수 있다라고 하셨다가 뒤에 이 방식은 사실상 경쟁상태에 무관하다고 정정해주셨는데 그럼 두 개의 프로세스가 동시에 데이터를 확인하고 삽입하려 했을때 무관하다는 의미인가요?? 왜 무관한지 잘 모르겠습니다.

  • mysql
  • dbms/rdbms
  • 데이터-엔지니어링
  • backend
Cola 댓글 1 좋아요 0 조회수 64

stmt

해결됨

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

강의에서 말하는 stmt는 직접 jdbc를 쓰라는 얘기인가요? 아니면 mybatis 같은 orm을 얘기하는건가요?

  • mysql
  • dbms/rdbms
  • 데이터-엔지니어링
  • backend
Cola 댓글 1 좋아요 0 조회수 56

실행 통계2 explain analyze 조인 쿼리

미해결

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

eXPLAIN ANALYZE SELECT m.member_name, o.total _price FROM orders o JOIN member m ON m.member_id = o.member_id; 위쿼리를 시작했는데 거의 수분 5분이 넘어도 결과가 나오는데 너무 오래 걸립니다. Nested loop inner join (cost=5.85e+6 rows=4.86e+6) (actual time=2.89..446250 rows=5e+6 loops=1) -> Table scan on o (cost=503796 rows=4.86e+6) (actual time=0.77..3714 rows=5e+6 loops=1) -> Single-row index lookup on m using PRIMARY (member_id=o.member_id) (cost=1 rows=1) (actual time=0.0882..0.0882 rows=1 loops=5e+6) 위는 실행 계획으로 약7분 26초가 걸렸습니다. 그리고 데이터 넣을떄도 orders부분도 한 한시간 넘게 걸렷던거 같습니다. 강의를 듣고싶은데 이부분은 그냥 오래걸리면 넘어가도 될까요? 컴퓨터 사양도 그렇게 나쁘지않습니다 32gb램을쓰고 있는데 뭔가 강의를 계속해서 듣고 싶은데 이런거 하나하나 막힐때마다 너무 오래걸려서 어떻게 해야될지를 모르겠습니다.

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
안태승 댓글 1 좋아요 0 조회수 67

[해결됨]마지막 강의 내용 수정 화면이 기능을 못하네요.

미해결

Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기

마지막 강의 내용. 내용 수정 화면에서 수정이 안되네요. 자세한 내용을 추가해서 올리겠습니다.

  • mysql
  • rest-api
  • spring-boot
  • jpa
  • react.js
Jang Jaehoon 댓글 1 좋아요 0 조회수 59

[해결됨]부분적으로 화면 이동이 안되는 부분이 있습니다.

미해결

Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기

안녕하세요. 거의 다 완성했는데, 이상하게 화면 이동이 안되는 부분이 있어서 질문 올립니다. 화면 이동이 안되는 부분은 상세화면 PostDetail.js 에서 편집화면 PostEdit.js로 넘어가는 부분입니다. 먼저 PostDetail.js 소스입니다. import React from 'react'; import {useNavigate, useParams} from "react-router-dom"; import {Link} from "react-router-dom"; import "./css/detail.css"; import {useEffect, useState} from "react"; import axios from "axios"; let PostDetail = () => { const {id} = useParams(); // URL에 포함된 파라미터 값을 가져오는 hook // http://localhost:3000/users/1 : このURLへ移動後、idが1 の場合に含まれるデータを持って来る。 let navigate = useNavigate(); let [post, setPost] = useState({ // useState:状態管理hook. 引数が状態 title:"", content:"" }); const getPost = () =>{ // axios : 非同期Api 呼出し 処理 library axios.get(`${process.env.REACT_APP_API_URL}/posts/${id}`) // REACT_APP_API_URL=http://localhost:8080/api .then(res=> { // console.log('情報の呼出し成功',res.data); console.log(res.data); setPost(res.data); }).catch(err=>{ // console.error('情報の呼出し失敗',err); console.error(err); // axios.get() -> サーバーへの要請 // -> 応答成功の場合 -> then() 実行 // -> 応答失敗の場合 -> catch() 実行 }); // The end of catch } // The end of getPost function // getPost Arrow 関数を実行。 useEffect(()=>{ getPost(); },[]); const handleDelete = () => { if(!window.confirm("本当に削除しますか?")){ return; } axios.delete(`${process.env.REACT_APP_API_URL}/posts/${id}`) .then(res=>{ console.log(res.data); alert("削除されました。"); navigate("/home"); }).catch( err=>{ console.log(err); alert("削除過程の中でエラーが発生致しました。"); } ); // The end of catch // alert(`情報が削除されました。`); } // const post = { // id, // title: `The name of ${id}`, // content: `The project of ${id}`, // // empID: `EmployId of ${id}`, // // info: `The other information of ${id}` // }; return ( <div className={"post-detail-container"}> <h1 className={"post-detail-title"}>{post.title}</h1> <p className={"post-detail-content"}>{post.content}</p> {/*<p className={"post-detail-empID"}>{post.empID}</p>*/} {/*<p className={"post-detail-info"}>{post.info}</p>*/} <div className={"button-group"}> <Link to={`/posts/edit/${post.id}`} className={"edit-button"}> 編集 </Link> <button onClick={handleDelete} className={"delete-button"}> 削除 </button> </div> <Link to="/home" className="back-link">戻る</Link> </div> ); } export default PostDetail;

  • mysql
  • rest-api
  • spring-boot
  • jpa
  • react.js
Jang Jaehoon 댓글 6 좋아요 0 조회수 93

68강 문제 풀이

미해결

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

문제를 풀면서 66. 인덱스 설계 가이드 라인 에서 카디널리티 이야기가 나왔던게 생각이 났습니다. is_active는 값이 TRUE/FALSE 2개이므로 카디널리티가 낮을거라(중복도 높음) 생각했습니다. 그리하여 문제에서 주어진 쿼리를 보고 중간에서 is_active에서 풀 스캔 VS is_active 컬럼도 인덱스에 추가할지 고민이 되었습니다. 정답처럼 인덱스에 추가해주는게 더 나은 선택인걸까요? 음... 때에 따라 다른거 같기도 합니다! TRUE/FALSE의 비율 같은게 추가 조건으로 나왔더라면 선택하기 더 좋았을 거 같네요. 예를 들어, TRUE의 비율이 95% 다 이러면 인덱스를 달아주는 것과 풀 스캔이 별 차이가 없었을 거 같다는 생각이 드네요!

  • sql
  • mysql
  • dbms/rdbms
  • SQLD
thrkrif 댓글 1 좋아요 0 조회수 50

현대 쿼리 복잡성에 관한 질문

미해결

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

안녕하십니까! 덕분에 수업 잘 듣고 있습니다! 쿼리를 쉽고 가독성 좋게 설계하면서 추가 비용이 드는 형태가 많이 보이는데 제가 실제 실무를 겪어보진 않았지만 직감적으로 느끼는 부분이 있습니다! LLM이 발전하면서 쿼리에 대한 작성 난이도가 낮아졌을거라고 예상하고 시간이 지날수록 이런 부분이 더 빠르게 발전될 것이라고 생각합니다! 그럼 쿼리 작성에 대한 비용이 낮아지면서 0에 가까워질 거 같은데 그럼에도 기존 소프트웨어 개발 실무에서 적용된 "쉬운 쿼리, 조금의 추가 비용"의 형태가 유지될까요?! 아니면 실제로 이러한 부분이 현업에서도 반영이 되고 있나요? 비즈니스 의도, 집단 환경에 따라 다르겠지만 영한님의 시선으로도 의견이 궁금해서 질문드립니다!

  • sql
  • mysql
  • dbms/rdbms
  • 소프트웨어-설계
  • SQLD
Jh P 댓글 3 좋아요 0 조회수 118

key_length 가 사용되는곳

미해결

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

궁금한게 key_length 를 이용해서 어떻게 사용하는지에 대해서가 22강에서 안나왔는데 그 이후로 나오나요? key_len 이 기대한것보다 적으면 인덱스가 잘 사용되고 있지 않다고만 설명을 하고 지나가셨는데 이후에 key_len 값을가지고 개선 하는방법이 나오는지 알고싶습니다.

  • sql
  • mysql
  • dbms/rdbms
  • sql-tuning
  • SQLD
안태승 댓글 1 좋아요 0 조회수 53

낙관적락 질문있습니다.

미해결

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

457 장표의 사진이 이해가 잘 안갑니다. 우선 트랜잭션을 열고 트랜잭션1에서 update를 하는 순간 lock 을 획득, 그 후 실제 version을 하나 올린 후 동일 트랜잭션이 commit하기 전까지 락을 잡고 있는걸로 알고 있습니다. 근데 이미지 순서로 따지자면 트랜잭션 2에서 트랜잭션1의 commit 전단계에서 update를 수행하게 되는데 이러면 격리수준에 따라 달라지겠지만 READ COMMITTED에서는 여전히 version=1로 존재하기때문에 정상적으로 update 처리 되는거 아닌가요? 실제로는 트랜잭션 1에서 lock을 계속 가지고 있어서 트랜잭션 2에서 update에 진입도 못하겠지만 이미지가 잘 이해가 안되네요 특히 왜 갱신실패응답으로 떨어지는지도 이해가 안갑니다.

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

댓글순서부여방식

미해결

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

무한 depth 댓글의 path 생성 방식에 대해 궁금한 점이 있습니다. 강의에서는 각 depth마다 00000 , 00001 같은 별도의 순차값을 부여해서 예를 들면 댓글1 → 00000 댓글2 → 00000 00000 댓글6 → 00000 00000 00000 댓글4 → 00000 00001 처럼 path를 구성하는 것으로 이해했습니다. 그런데 기존의 comment_id 가 이미 댓글 생성 순서를 보장한다면, 굳이 각 depth마다 새로운 순차값을 다시 부여하지 않고 comment_id 를 고정 길이 문자열로 변환해서 댓글1(id=1) → 00001 댓글2(id=2) → 00001 00002 댓글6(id=6) → 00001 00002 00006 댓글4(id=4) → 00001 00004 처럼 path를 만들어도 ORDER BY path ASC 시 동일하게 트리 순서가 보장될 것 같은데, 강의에서 별도의 순차값을 사용하는 이유가 있을까요?

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

공통 코드 VS Enum 클래스

미해결

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

DB에 공통 코드를 저장하는 테이블을 만드는 것과 코드에서 Enum 클래스를 만들어서 관리하는 것 중 어떤 방법이 더 괜찮은걸까요?? 각 방식의 장단점이 있을까요??

  • sql
  • mysql
  • dbms/rdbms
  • 소프트웨어-설계
  • SQLD
꼬여사님 댓글 1 좋아요 1 조회수 68

movablePageCount와 pageSize 상수

미해결

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

안녕하세요 강의 잘 듣고있습니다. Service쪽 코드에 movablePageCount는 10L로 상수를 넣고 pageSize는 변수로 넣었는데 서비스적으로 볼때는 이 2개 전부 상수로 봐야하는거 아닌가 해서 질문 남깁니다. 페이지 하나당 몇개의 게시글을 보여줄 것인지, 현재 한 묶음당 몇개의 페이지씩 노출시킬건지는 모두 기획 단계에서 정해지므로 상수값으로 생각되어지는데 둘다 상수 혹은 둘 다 변수로 두지 않고 movablePageCount는 상수로 , pageSize는 변수로 파라미터에게 넘겨주는 이유가 궁금합니다

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

인기 태그

인프런 TOP Writers

주간 인기글