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 정보  
  • 좋은 웹페이지 즐겨찾기