728x90
데이터베이스 엔진(DataBase Engine) 또는 스토리지 엔진(Storage Engine)은 데이터베이스 관리시스템(DBMS)이 데이터베이스에 대해 데이터를 삽입 ,추출,업데이트 및 삭제하는데 사용하는 기본 소프프웨어 컴포넌트이다.
데이터베이스 엔진을 조작할 때 DBMS 고유의 사용자 인터페이스를 이용하는 방법과 포트 번호를 통해 이용하는 방법이 있다.DBMS은 사용자 인터페이스를 통하지 않고, 사용자가 내장된 엔진과 상호작용을 할 수 있는 자신만의 애플리케이션 프로그래밍 인터페이스를 포함하고 있다.
MYSQL DB의 스토리지엔진이란
스토리지엔진은 DB에서 데이터를 어떠한 방식으러 저장하거 접근할 것인지에 대한 기능을 제공한다.스토리지 엔젠의 특성에 따라 데이터 접근이 얼마나 빠른지, 얼마나 안정적인지 , 트랜잭션 등의 기능을 제공하는지 등의 차이점이 발생한다.
1.MyIsam
- 주로 SELECT작업이 많은 경우에 사용하는 MyIsam은 MYSQL의 기본 스토리지 엔진으로 데이터 저장에 실제적인 제한이 없고 매우 효율적으로 저장한다.Full-Text 인덱스를 지원하고 특정 인덱스에 대해 Memory Cache를 지원한다. 트랜잭션은 미지원 / 테이블 레벨의 LOCK을 지원한다.
- 잦은 변경 및 삭제에는 좋은 성능이 나오지 못하나 데드락 발생은 예방 가능하다.테이블 작업 시 특정 행을 수정하려고 하면 테이블 전체에 LOCK이 걸려서 다른사람이 작업이 불가능하다.(작업시에는 Table-LOCK이 걸린다.)
- 트랜잭션에 대한 지원이 없기 떄문에 작업도중 문제가 생겨도 이미 데이터베이스안으로 데이터가 들어간다.
2.InnoDB
- ACID트랜잭션을 지원하며, MyISAM보다 데이터 저장비율이 낮고, 데이터 로드 속도가 느리다. 특정 데이터와 인덱스에 대해서 Memory Cache를 지원한다.
- 데이터 압축이 불가능하고 자동 에러복구 기능이 있고 테이블 레벨이 아닌 ROW레벨의 락을 지원한다.
- 테이블 작업 시 작업을 시작하면 해당 열만 잠기게 되며 나머지 부분은 다른 사용자가 수정이 가능하다.
- 쉽게 말하면 LOCK이 작업 시에 Row_Level Lock이 걸리게 된다.
- Low_Level이다 보니 insert,delete,update에 대한 속도가 빠르고 주로 데이터 입력 및 수정이 빈번하고 높은 퍼포먼스를 요구하는 대량사이트에 적합하다.
3.Cluster
- 트랜잭션을 지원하고 모든 데이터와 인덱스가 메모리에 존재하여 매우 빠른 데이터 로드 속도를 자랑하며 PK 사용시 최상의 속도를 나타 낸다.
4.Archive
- MySql 5.0부터 새로 도입된 엔진으로 자동적으로 데이터 압축을 지원하며 다른 엔진에 비해 80프로 저장공간 절약효과가 있고, 가장 빠른 데이터 로드 속도 또한 있지만 Insert와 select만 가능하다.
728x90
'Dev' 카테고리의 다른 글
세션 관리 전략 (0) | 2021.10.21 |
---|---|
REST API (0) | 2021.10.09 |
프록시(Proxy)란 (0) | 2021.07.26 |
객체 지향 프로그래밍(OOP) (0) | 2021.06.16 |
[CS]프로세스(Process)란? (0) | 2021.06.13 |