Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mysql-1

Bdf737e242c4ae4f28820b7d76b2a753?s=47 garimoo
February 02, 2021

 mysql-1

Bdf737e242c4ae4f28820b7d76b2a753?s=128

garimoo

February 02, 2021
Tweet

Transcript

  1. Real MySQL 스터디 리뷰 -1 03 아키텍처 04 트랜잭션과 잠금

    05 인덱스 07 쿼리 작성 및 최적화
  2. 03 아키텍처

  3. 03 아키텍처 MySQL의 전체 구조

  4. 03 아키텍처 MySQL 스레딩 구조

  5. 03 아키텍처 메모리 할당 및 사용 구조

  6. 03 아키텍처 복제 구조

  7. 03 아키텍처 쿼리 캐시

  8. 03 아키텍처 InnoDB 스토리지 엔진 PK Clustering MVCC -> Non

    locking consistent read 자동 데드락 감지 Oracle Architecture 적용
  9. 03 아키텍처 MySQL 로그 파일 Error Log General Log Slow

    Query Log Binary Log & Relay Log
  10. 03 아키텍처 QnA Q1. statement-based replication 방식에서 는 REPEATABLE READ

    을 지원, row-based replication 방식에서는 READ COMMITTED 격리 수준을 지원하는 이유는? 그리고 어떤 방식을 선호하는지?
  11. 04 트랜잭션과 잠금

  12. 04 트랜잭션과 잠금 MySQL 엔진의 잠금 Global Lock Table Lock

    User Lock Name Lock FLUSH TABLES WITH READ LOCK LOCK TABLES table_name [READ|WRITE] GET_LOCK / IS_FREE_LOCK / RELEASE_LOCK RENAME TABLE rank TO rank_backup, rank_new TO rank
  13. 04 트랜잭션과 잠금 InnoDB 잠금 종류

  14. 04 트랜잭션과 잠금 InnoDB 잠금 종류 Auto Increment Lock •

    innodb_autoinc_lock_mode = 0 • innodb_autoinc_lock_mode = 1 • innodb_autoinc_lock_mode = 2
  15. 04 트랜잭션과 잠금 인덱스와 잠금 UPDATE employees SET hire_date=NOW() WHERE

    first_name=‘Georgi’ AND last_name=‘Klassen’;
  16. QnA Q1. USER_LOCK을 사용하는 경우가 있나요? Q2. 우리 설정에서 innodb_autoinc_lock_mode는

    몇인가요? Q3. 우리 설정은 auto-commit인거 같은데, 왜 그런가요? 04 트랜잭션과 잠금
  17. 05 인덱스

  18. 05 인덱스 B-Tree 인덱스

  19. 05 인덱스 인덱스 키 추가

  20. 05 인덱스 B-Tree 인덱스로 데이터 읽기 Index Range Scan Index

    Full Scan Loose Index Scan
  21. 05 인덱스 클러스터링 인덱스

  22. 05 인덱스 클러스터링 인덱스 주의사항 클러스터 인덱스 키의 크기 AUTO-INCREMENT

    보다는 업무적인 column 사용 PK는 반드시 명시
  23. 05 인덱스 유니크 인덱스 (a.k.a 제약조건) 읽는 속도는 일반 인덱스와

    비슷 쓰는 속도는 일반 인덱스보다 느리고 데드락 발생이 쉬움
  24. 07 쿼리 작성 및 최적화

  25. 07 쿼리 작성 및 최적화 쿼리와 관련한 시스템 설정 STRICT_ALL_TABLES

    STRICT_TRANS_TABLES ANSI_QUOTES ONLY_FULL_GROUP_BY PIPE_AS_CONCAT PAD_CHAR_TO_FULL_LENGTH NO_BACKSLASH_ESCAPES IGNORE_SPACE ANSI
  26. 07 쿼리 작성 및 최적화 날짜 표기 SELECT * FROM

    dept_emp WHERE from_date = ‘2021-01-15’; SELECT * FROM dept_emp WHERE from_date = STR_TO_DATE(‘2021-04-29’,’%Y-%m-%d’);
  27. 07 쿼리 작성 및 최적화 연산자 =, <=> ! &&,

    || /, DIV, %, MOD LIKE REGEXP BETWEEN IN
  28. 07 쿼리 작성 및 최적화 내장함수 IFNULL(), ISNULL() NOW(), SYSDATE()

    DATE_FORMAT(), STR_TO_DATE() DATE_ADD(), DATE_SUB() RPAD(), LPAD() / RTRIM(), LTRIM(), TRIM()
  29. 07 쿼리 작성 및 최적화 내장함수 CONCAT(), GROUP_CONCAT() CAST(), CONVERT()

    INET_ATON(), INET_NTOA() VALUES() COUNT()
  30. 07 쿼리 작성 및 최적화 Auto Increment 1. PK /

    UK의 일부여야 함 2. Key가 한개면 제약 없음 3. Key가 여러개일 때 a) 맨 앞이면 제약 없음 b) 맨 앞이 아니라면 auto increment column으로 UK를 만들어야 함
  31. 07 쿼리 작성 및 최적화 Auto Increment SELECT MAX(id) FROM

    … SELECT LAST_INSERT_ID();
  32. 07 쿼리 작성 및 최적화 TABLES DROP TABLE; 5.1 ➡

    global lock 5.6 ➡ table write lock 8.0 ➡ table write lock
  33. 07 쿼리 작성 및 최적화 COLUMNS (5.6) Adding a column

    Dropping a column Reordering columns Changing the column data type Making a column NULL Making a column NOT NULL Rename a column Setting a column default value Dropping the column default value Changing the auto-increment value REBUILD TABLES
  34. 07 쿼리 작성 및 최적화 COLUMNS (8.0) Dropping a column

    Reordering columns Changing the column data type Adding a column Rename a column Setting a column default value Dropping the column default value Changing the auto-increment value Extenting VARCHAR column size Making a column NULL Making a column NOT NULL REBUILD TABLES
  35. 07 쿼리 작성 및 최적화 INDEXES Creating or adding a

    secondary index Dropping an index Adding a FULLTEX index Changing the index Type 5.6 Creating or adding a secondary index Dropping an index Renaming an index Adding a FULLTEX index Adding a SPATIAL index Changing the index Type 8.0
  36. QnA Q1. 테이블, 인덱스 점검을 걸고 해야 하는 작업과 아닌

    작업? 07 쿼리 작성 및 최적화