반응형

📝스토리지 엔진 (Storage Engine)

  • MySQL은 각 DB를 파일 시스템 안의 정보를 스토리지 엔진에 저장합니다 다시 말해 MyTable이라는 테이블을 만드는 경우 MyTable.frm에 테이블 정의를 저장합니다 데이터베이스 이름과 테이블 정의를 저장하는데 파일 시스템을 사용합니다.

 

📝InnoDB Engine

  • 트랜잭션 처리 위해 고안 대부분의 경우 롤백 되지 않고 완료되는 (즉 정상 종료) 짧은 트랜잭션이 많은 경우 처리하기 좋게 되어있고 많이 쓰는 스토리지 엔진이다
  • 정보의 무결성과 손실되면 안 되는 중요한 데이터를 필요로 할 때 사용합니다
  • MySQL 스토리지 엔진의 인덱스 구조와 매우 상이해 신속한 PK 조회 가능합니다.
  • 만약 기본 키가 크다면 다른 인덱스(보조 인덱스 (PK 아닌 인덱스)) 또한 클 것이다. (조회가 더딜 수 있음)
  • 여러 인덱스를 가진다면 기본키가 작은 값을 갖게 해야 한다

 

📝MyISAM Engine

  • 전문 (full-text) 인덱싱압축, 공간 (Geographic Information System, GIS, 지리정보시스템) 함수 등 여러 유용한 기능을 제공하지만 Table lock 사용하여 트랜잭션이나 Row 수준의 잠금을 지원하지 않는다.
  • MyISAMTransaction을 지원하지 않기 때문에 InnoDB보다 심플하고 기본적으로 빠르지만동시성 제어가 어렵다는 단점이 있다 그래서 Read 쿼리가 많은 환경에서 많이 사용한다.

 

📝Memor Engine

  • 메모리에 데이터를 저장하는 엔진이며 Transaction을 지원하지 않는다
  • 메모리를 사용하기 때문에 기본적으로 속도가 아주 빠른 편 그렇기 때문에 중요하지 않지만 빠른 처리가 필요한 임시 테이블로 많이 사용하는 편이다.

 

📝Archive Engine

  • 아주 빠르게 INSERT 쿼리를 처리할 수 있는 엔진
  • Index를 지원하지 않으며 INSERT/REPLACE/SELECT 쿼리와 같이 데이터를 삽입하거나 읽는 것은 가능하지만DELETE/UPDATE와 같이 데이터를 삭제하거나 수정할수는 없다
  • transaction을 지원하지 않는다 주로 많은 양의 로그성 데이터를 저장하고 읽는데 주로 사용된다.

 

📝CSV Engine

  • CSV 엔진은 쉽표로 구분된 값(Comma Separated Values)으로 구성된 파일을 테이블로 처리할수 있지만 인덱스를 지원하지는 않는다
  • 스프레드시트에서 CSV 파일을 내보내 MySQL 서버의 데이터 디렉터리에 저장하면 서버는 그 즉시 이 파일을 읽을 수 있다 마찬가지로 CSV 테이블에 데이터를 기록하면 외부 프로그램이 이를 바로 읽을 수 있다.

 

📝Federated Engine

  • 데이터를 자체 스토리지에 저장하지 않는다Federated 테이블은 원격 MySQL서버 내의 태이블을 참조하는데, 결국 모든 작업에 있어서 원격 서버에 연결한다고 볼 수 있다.

 

📝Blackhole Engine 

  • 저장 메커니즘을 전혀 갖고 있지 않으며 모든 INSERT 구문을 실행하지 않고 그냥 버린다 그러나 서버는 Blackhole 테이블에 대한 쿼리를 로그에 기록하므로 그 정보가 슬레이브에 복제되거나 로그에 남아 있을 수 있다 이로 인해 Blackhole 엔진은 복잡한 복제 구성과 감사용 로깅에 유용하게 사용할 수 있다.

 

MySQL 기반의 응용 프로그램을 설계할 때, 어느 스토리지 엔진을 사용해 데이터를 저장할지 결정해야 한다 설계 단계에서 이를 생각해보지 않으면 나중에 번거로워질 수 있다.

반응형