2022/11 12

Chapter 04.02 InnoDB 스토리지 엔진 아키텍처(architecture)

4.2 InnoDB 스토리지 엔진 아키텍처(architecture) InnoDB는 MySQL의 스토리지 엔진 가운데 가장 많이 사용된다. MySQL 스토리지 엔진 중 유일하게 레코드 기반의 잠금을 제공한다. 동시성 처리 가능하고 안정적, 성능 뛰어나다. cf) 클러스터링(Clustering)이란? 하나의 데이터베이스를 여러 개의 서버로 구축하는 것을 말한다. 1개의 서버에 데이터베이스를 이용할 경우, 서버가 다운될 경우 서비스가 다운되기 때문에 클러스터링을 이용한다. 4.2.1 프라이머리 키(Primary Key)에 의해 클러스터링 InnoDB의 모든 테이블의 PK를 기준으로 클러스터링(Clustering)되어 저장된다.(PK = 클러스터링 인덱스) PK 순서대로 디스크에 저장된다. 세컨더리 인덱스는 레..

Chapter 04.01 MySQL 엔진 아키텍처(architecture)

MySQL (서버)에 대한 구분 사람의 머리 역할을 하는 MySQL 엔진 커넥션 핸들러, SQL 인터페이스, SQL 파서, SQL 옵티마이저, 캐시 & 버퍼 손발 역할 담당하는 스토리지 엔진: 핸들러 API를 만족하면 스토리지 엔진을 구현해서 MySQL 서버에 추가해서 사용 가능하다. InnoDB, MyISAM, Memory MySQL (서버)은 크게 MySQL엔진 + 스토리지 엔진으로 구성된다. 4.1 MySQL 엔진 아키텍처 MySQL(서버)는 다른 DBMS에 비해 독특한 구조로 이뤄져서 큰 혜택이 있는 동시에 다른 DBMS에서는 생기지 않는 문제가 발생하기도 한다. 4.1.1 MySQL의 전체 구조 프로그래밍 언어로부터 MySQL에 접근하는 방법 C API, JDBC, .NET 의 표준 드라이버 제..

Chapter 02. 클린코드와 그 첫 걸음 네이밍

1. 나쁜 코드란? 성능이 나쁜 코드 의미가 모호한 코드 중복된 코드 나쁜 코드가 나쁜 이유? 깨진 유리창 법칙 => 계속해서 나쁜 코드가 만들어지도록 한다. 생산성 저하 2. 클린 코드 성능 좋은 코드 의미가 명확한 코드 (가독성 좋은 코드) 중복이 제거된 코드 보이스카우트 룰: 전보다 더 깨끗한 코드로 만든다. 3. 의미 있는 이름 짓기 for loop에 i, j, k 사용하기 보다는 advanced for문을 이용할 수도 있다. 또는 최대한 의미를 찾아서 맥락에 맞는 이름을 사용한다. 통일성 있는 단어 사용하기 변수명에 타입을 넣지 않는다. ex) 가격을 의미하는 변수명에 "amount" 넣지 않기 배열에 "arr" 넣지 않기 list, map은 넣어도 괜찮다. 요즘은 인터페이스 앞에 "I" 를 붙..

[programmers] GROUP BY

진료과별 총 예약 횟수 출력하기 - level 2 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/132202 GROUP BY, WHERE 절을 이용한다. Sol) SELECT MCDP_CD '진료과코드', COUNT(*) '5월예약건수' FROM APPOINTMENT WHERE YEAR(APNT_YMD) = 2022 AND MONTH(APNT_YMD) = 5 GROUP BY MCDP_CD ORDER BY 2, 1 식품 분류별 가장 비싼 식품의 정보 조회하기 - level 4 출처 - https://school.programmers.co.kr/learn/courses/30/lessons/131116 cf) 정답 # 식용 마저유: 8950 #..

[leetcode] Day 2. SELECT & Order

1873. Special Bonus 출처 - https://leetcode.com/problems/calculate-special-bonus/ Write an SQL query to calculate the bonus of each employee. The bonus of an employee is 100% of their salary ,if the ID of the employee is an odd number and the employee name does not start with the character 'M'. The bonus of an employee is 0 otherwise. Return the result table ordered by employee_id. The query resul..

[11월 3주차] 알고리즘 스터디

1. 호석이 두 마리 치킨 - 골드 5 출처 - https://www.acmicpc.net/problem/21278 21278번: 호석이 두 마리 치킨 위의 그림과 같이 1번과 2번 건물에 치킨집을 짓게 되면 1번부터 5번 건물에 대해 치킨집까지의 왕복 시간이 0, 0, 2, 2, 2 로 최소가 된다. 2번과 3번 건물에 지어도 동일한 왕복 시간이 나오지만 더 www.acmicpc.net Sol) 스터디원 jm - 플로이드 워셜 public class Main { static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); static int N; static int M; static int[][] ..

[4주차] bridge 미션

Ex) bridge 요구 사항 # 미션 - 다리 건너기 ## 🔍 진행 방식 - 미션은 **기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항** 세 가지로 구성되어 있다. - 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. - 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다. ## 📮 미션 제출 방법 - 미션 구현을 완료한 후 GitHub을 통해 제출해야 한다. - GitHub을 활용한 제출 방법은 [프리코스 과제 제출](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) 문서를 참고해 제출한다. - GitHub에 ..

[3주차] lotto 미션

Ex) lotto 요구 사항 # 미션 - 로또 ## 🔍 진행 방식 - 미션은 **기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항** 세 가지로 구성되어 있다. - 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. - 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다. ## 📮 미션 제출 방법 - 미션 구현을 완료한 후 GitHub을 통해 제출해야 한다. - GitHub을 활용한 제출 방법은 [프리코스 과제 제출](https://github.com/woowacourse/woowacourse-docs/tree/master/precourse) 문서를 참고해 제출한다. - GitHub에 미션을 제..

회원 유효성 검증

ExceptionHandler 만들기 서비스 로직을 들어가기 전에 회원이 정보가 유효하지 않을 때 예외를 터뜨린다. methodArgumentNotValidHandlerCustomException() MethodArgumentNotValidException를 처리해주는 핸들러가 있어야한다. 이를 만들어주지 않으면? 에러의 메시지가 다음과 같이 제대로 안 나온다. @Slf4j @RestControllerAdvice public class CustomExceptionHandler { @ExceptionHandler(MemberException.class) protected ResponseEntity memberHandlerCustomException( MemberException e) { MemberErro..

[2주차] baseball game 미션

baseball game 요구사항 미션 - 숫자 야구 🔍 진행 방식 미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있다. 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다. 📮 미션 제출 방법 미션 구현을 완료한 후 GitHub을 통해 제출해야 한다. GitHub을 활용한 제출 방법은 프리코스 과제 제출 문서를 참고해 제출한다. GitHub에 미션을 제출한 후 우아한테크코스 지원 사이트에 접속하여 프리코스 과제를 제출한다. 자세한 방법은 제출 가이드 참고 Pull Request만 보내고 지원 플랫폼에서 과제를 제..