Skip to content

zunior-study/real-mysql-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

104 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📚 Real Mysql 8.0 스터디

모티브

  • 자유, 함께 그리고 완주

멤버

진행안

  • 토론형 스터디
  • 각 챕터 내용 자유롭게 정리 (플랫폼 상관없이)
  • 토론시, 공부하면서 느꼈던 중요사항 질문 2~3가지 준비

정리

No. 주제 정리 자료
Week 01 사전 모임 -
Week 02 MySQL 아키텍처 [라영지]
[민율]
[최정헌]
[현건수] - GitHub
Week 03 트랜잭션과 잠금 [라영지]
[민율]
[최정헌]
[현건수] - GitHub
Week 04 인덱스 [라영지]
[민율]
[최정헌]
[현건수] - GitHub
Week 05 옵티마이저와 힌트 [라영지]
[민율]
[최정헌]
[현건수] - GitHub

질문 목록

1주차 - Mysql 아키텍처

  • 포그라운드 쓰레드와 백그라운드 쓰레드 차이는 무엇인가?
  • MySQL엔진과 스토리지엔진의 역할을 말해보시오
  • MySQL 성능 상의 이유로 읽기 작업과 쓰기 작업의 처리 방식이 다른데, 이 부분에 대해서 알고 있는가?
  • DB는 ACID를 유지해야하는데 DML(INSERT, DELETE, UPDATE) 작업 시 버퍼풀로 올릴 경우, 서버가 장애날 경우 어떤 식으로 데이터를 보장하는가?
  • DML(INSERT, DELETE, UPDATE) 작업 시 리두로그와 언두로그의 데이터 변경을 설명해보시오
  • 데드락 감지 쓰레드에 대해 설명해보고, 데드락 시 어떤 기준으로 트랜잭션을 종료하는지 설명해보시오
  • MVCC의 개념을 설명해주세요
  • 쿼리 실행 구조를 설명해주세요
  • 언두로그 사용시 여러 트랜잭션이 길어질 때, 메모리 사용량 주의사항을 설명해보시오

2주차 - 트랜잭션과 잠금

  • 격리 레벨 4단계를 설명해보시오
    • 더티리드
    • 넌 리피터블 리드
    • 팬텀 리드
  • 갭락과 넥스트 키락 개념
  • InnoDB의 레코드 락 방식을 설명해주시오
    • 인덱스가 하나도 없을 경우 동작 방식
  • 테이블락이 InnoDB에 영향을 주지 않는데, 특정 상황엔 테이블락이 걸린다. 이 특정 상황은?
  • 만약에 DB 서버 1대고 , APP 서버 5대 → DB 동기화시켜야한다 . 이 동기화 방법은?
  • READ-COMMITED에서 더티리드 현상을 어떻게 막았는지?
  • REPEATABLE-READ는 기본적으로 SELECT는 트랜잭션 범위 내에서 작동한다 그 이유는? (READ-COMMITED는 트랜잭션 내에서 실행되는 SELECT 문장과 트랜잭션 외부에서 실행되는 SELECT 문장의 차이가 별로 없다.)
    • (답안)
    • 트랜잭션 번호 → 트랜잭션 내에 EX) 10번 → 깨지는것
    • 트랜잭션 번호도 언두로그 저장하기 때문에 트랜잭션 외부에서 동작하면
    • 언두로그에 있는 자신의 트랜잭션 번호보다 낮은 트랜잭션 번호 데이터를 읽어드리기 때문에

3주차 - 인덱스

  • 테이블 풀스캔과 인덱스 레인지 스캔의 I/O방식 특징
    • 순차 I/O, 랜덤 I/O
  • 많은 자료구조가 있는데 인덱스가 왜 B-TREE를 사용하나?
  • 클러스터링 인덱스 VS 넌 클러스터링 인덱스
  • 커버링 인덱스 설명
    • INDEX (A) → SELECT A
  • InnoDB 스토리지 엔진이 클러스터링 키를 가지는 조건
    • 프라이머리 키 → 클러스터링 키
    • 유니크 키 → 제일 첫번째 키가 클러스터링 키
    • x → 레코드마다 내부적으로 일련번호 클러스터링 키
  • 복합인덱스, 선행 컬럼이 where 없으면 어떤 인덱스, 설명?
    • INDEX(A,B)
    • SELECT * FROM TABLE WHERE B= 10;
    • [조건]인덱스 스킵 스캔 → MySQL 8.0, 커버링 인덱스
  • 복합인덱스, 5.7인경우 선행 컬럼이 없을 경우 어떻게 되는지?
    • 선행 컬럼이 없으면 안타고
    • INDEX(A,B) 있을 경우 LIKE(”%”)를 사용할 경우
  • 클러스터링 인덱스 구조가 B-TREE인데, 다른점
    • 클러스터링 - 데이터 레코드를 가지고 있다
  • 클러스터링 인덱스 vs 세컨더리 인덱스 데이터를 찾아가는 방식
  • InnoDB와 MyISAM의 세컨더리 인덱스로 검색할 때의 차이점
    • MyISAM은 인덱스를 검색해 레코드의 주소를 확인하고, 레코드의 주소로 최종 레코드를 가져옴
    • InnoDB : 인덱스를 검색해 레코드의 프라이머리 키 값을 확인하고, 프라이머리 키 인덱스를 검색해서 최종 레코드를 가져옴
  • 유니크 인덱스 vs 세컨 인덱스
    • 유니크, 세컨더리 인덱스 중에 유니크 더 빠르다(?)
    • 검색
    • 쓰기
      • 세컨더리 : 더 빠르다고 ⇒ 체인지 버퍼를 통해 버퍼링
      • 유니크 : 무조건 중복체크 ⇒ 더 느리다
      • 읽기랑 쓰기 잠금이 데드락 빈번
  • 작업 범위 결정 조건 / 체크 조건으로 사용할 수 없는 인덱스 조건
  • 클러스터링 인덱스의 장단점
  • 외래키 DELETE CASCADE 설명 ?

4주차 - 옵티마이저와 힌트

  • 쿼리 실행 순서에 대해 설명해주세요
  • InnoDB 엔진으로 테이블 풀스캔 할 때, 빠른 처리를 위해 리드 어헤드를 사용하는데, 리드 어헤드를 설명해주세요
  • 정렬 시, 소트버퍼와 디스크에 저장하면서 사용하는데, 이를 멀티 머지 라고 하는데 간단하게 설명해주세요.
  • 정렬을 처리하는 방법중 filesort 사용시 소트 버퍼를 사용하게되는데 이때 싱글 패스, 투 패스 각각의 장단점에 대해 설명해주세요.
  • select * from bigtable 같은 쿼리를 싱행하면, MySQL 서버는 스트리밍 방식을 사용하지만 JDBC 라이브러리가 버퍼링 방식을 사용하는 이유는?

About

Real Mysql 8.0 스터디

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •