MySQL에 대해 요약

MySQL이란?



세계에서 가장 많이 사용되고 있는 데이터베이스 관리 시스템(DBMS: DataBase Manegement System)
  • 오픈 소스 소프트웨어 (OSS : Open Source Software)를위한 기본적으로 무료
  • 확장성과 유연성
  • 작은 응용 프로그램에서 거대한 응용 프로그램까지 모두 지원 가능
  • Mac, Windows, Linux 등 여러 OS에서 사용 가능


  • 스토리지 엔진을 테이블별로 선택할 수 있습니다

  • MySQL 실행 흐름



    클라이언트로부터 SQL문이 던져졌을 경우, MySQL에서는 대략 다음과 같은 흐름으로 처리됩니다.



    옵티마이저란?


  • SQL 문을 최적화 해주는 MySQL의 뇌와 같은 것
  • 각 테이블의 레코드수, 열수와 열의 크기나 인덱스 정보 등의 통계 정보를 바탕으로 어떻게 테이블에 액세스 하는지(전체 스캔하는지, 인덱스를 사용하는지 등)가 걸린 실행 계획 만들기

  • ※ 실제 DB 정보 = 통계 정보가 아니기 때문에 DB 정보가 갱신되면 통계 정보도 갱신이 필요
    (업데이트하지 않으면 오래된 정보를 바탕으로 실행 계획이 만들어져 버려 SQL의 성능이 떨어진다)

    스토리지 엔진이란?


  • 실제로 데이터베이스에 데이터를 읽고 쓰고 있습니다
  • 다양한 종류가 있으며 테이블별로 선택할 수 있습니다
  • 디폴트에서는 MySQL5.6까지는 MyISAM, MySQL5.7 이후는 InnoDB 가 선택되고 있다 (디폴트 스토리지 엔진을 설정할 수도 있다)
  • 테이블을 만들 때 선택
  • CREATE TABLE sample_table(id int) ENGINE = InnoDB;
    

    MyIsam 및 InnoDB



    MyIsam 특징


  • 장점
  • 참조 시스템 처리가 빠릅니다

  • 단점
  • 트랜잭션을 사용할 수 없으므로 복구가 번거롭습니다
  • 테이블 잠금을 걸면 여러 클라이언트의 동시 업데이트에서 잠금이 발생합니다.


  • InnoDB 특징


  • 장점
  • 트랜잭션을 사용할 수 있으므로 복구가 편합니다.
  • 행 잠금을 수행하기 때문에 업데이트/참조 충돌이 제한됩니다.

  • 단점
  • 참조 처리가 MyISAM에 비해 느립니다.
  • 데이터 사이즈가 MyISAM에 비해 커지므로 그만큼 디스크 용량이 필요.


  • MyISAM이나 InnoDB 외에도 다음과 같은 종류가 있다




    스토리지 엔진
    특징           


    MyISAM      
    데이터 파일과 인덱스 파일의 2 파일로 보존된다. 트랜잭션, 행 레벨 잠금을 지원하지 않습니다.

    InnoDB      
    트랜잭션, 행 레벨에 대응하는 엔진. MyISAM보다 속도가 떨어진다.

    Memory      
    메모리에 데이터를 저장하는 엔진. 재부팅 등으로 데이터가 손실됩니다.

    Merge      
    여러 MyISAM을 통합한 엔진.

    Federated    
    로컬에 데이터를 저장하지 않고 원격을 참조하는 엔진.


    덤



    MySQL의 처리를 요리에 비유해 보았습니다!



    참고



    · 실행 계획? ? 통계 정보? ? 라는 사람에게
    · MySQL의 "InnoDB"와 "MyISAM"에 대한 쉬운 차이점

    나마다



    DBA를 목표로 공부 중 ...

  • MySQL에 관하여 ◀ 이것
  • MySQL 설치

  • my.cnf 정보  
  • 좋은 웹페이지 즐겨찾기