MySQL 의 저장 엔진 에 대해 이야기 합 니 다.

7048 단어 MySQL메모리 엔진
기초 지식
관계 형 데이터베이스 에서 모든 데이터 시트 는 하나의 파일 에 해당 하 며,서로 다른 저장 엔진 은 서로 다른 표 형식 을 구축 합 니 다.
저장 엔진 의 역할 은 데이터 시트 가 데 이 터 를 어떻게 저장 하 는 지,저 장 된 데 이 터 를 위해 색인 을 만 드 는 지,업데이트,조회 등 기술 의 실현 을 어떻게 지원 하 는 지 규정 하 는 것 이다.
Oracle 과 SqlServer 등 데이터베이스 에 서 는 하나의 저장 엔진 만 지원 하기 때문에 데이터 저장 관리 체 제 는 모두 같 습 니 다.MySQL 에 서 는 다양한 저장 엔진 을 제공 합 니 다.사용 자 는 서로 다른 수요 에 따라 데이터 시트 에 서로 다른 저장 엔진 을 선택 할 수 있 고 사용자 도 자신의 필요 에 따라 자신의 저장 엔진 을 작성 할 수 있 습 니 다.
텍스트 파일 을 처리 할 때 txt 형식 을 사용 할 수 있 고 그림 을 처리 할 때 png 형식 을 사용 할 수 있 습 니 다.
메모리 엔진
MySQL 에서 다양한 저장 엔진 을 지원 하고 사용show engines;명령 은 지원 하 는 저장 엔진 을 볼 수 있 습 니 다.

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine       | Support | Comment                            | Transactions | XA  | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB       | DEFAULT | Supports transactions, row-level locking, and foreign keys   | YES     | YES | YES    |
| MRG_MYISAM     | YES   | Collection of identical MyISAM tables             | NO      | NO  | NO     |
| MEMORY       | YES   | Hash based, stored in memory, useful for temporary tables   | NO      | NO  | NO     |
| BLACKHOLE     | YES   | /dev/null storage engine (anything you write to it disappears) | NO      | NO  | NO     |
| MyISAM       | YES   | MyISAM storage engine                     | NO      | NO  | NO     |
| CSV        | YES   | CSV storage engine                       | NO      | NO  | NO     |
| ARCHIVE      | YES   | Archive storage engine                     | NO      | NO  | NO     |
| PERFORMANCE_SCHEMA | YES   | Performance Schema                       | NO      | NO  | NO     |
| FEDERATED     | NO   | Federated MySQL storage engine                 | NULL     | NULL | NULL    |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

mysql>
InnoDB
InnoDB 저장 엔진 은 MySQL 의 기본 저장 엔진 으로 트 랜 잭 션 을 지원 하 며 디자인 목 표 는 주로 온라인 트 랜 잭 션 처리(OLTP)를 위 한 응용 입 니 다.
줄 잠 금 디자인,외부 키 지원,Oracle 과 유사 한 비 잠 금 읽 기 를 지원 하 는 것 이 특징 입 니 다.즉,기본 읽 기 동작 에 잠 금 이 생기 지 않 습 니 다.InnoDB 메모리 엔진 은 데 이 터 를 논리 적 인 시계 공간 에 두 는데,이 시계 공간 은 블랙박스 처럼 InnoDB 메모리 엔진 자체 가 관리한다.
MySQL 4.1(4.1 포함)버 전부터 모든 InnoDB 메모리 엔진 의 시 계 를 하나의 독립 된 ibd 파일 에 단독으로 저장 할 수 있 습 니 다.또한,InnoDB 메모리 엔진 은 시계 공간 을 만 드 는 데 누 드 장치(row disk)를 지원 합 니 다.InnoDB 는 다 중 버 전 병행 제어(MVCC)를 사용 하여 높 은 동시성 을 얻 었 고 SQL 표준 의 4 가지 격 리 단 계 를 실현 했다.기본 값 은 REPEATABLE 등급 이 고 netx-key locking 이라는 전략 을 사용 하여 환 독(phantom)현상 이 발생 하지 않도록 했다.
이 밖 에 도 이 노 DB 메모리 엔진 은 삽입 버퍼(insert buffer),2 차 쓰기(double write),자가 적응 해시 인덱스(adaptive hash index),미리 읽 기(read ahead)등 고성능 과 사용 가능 한 기능 을 제공한다.테이블 에 있 는 데이터 의 저장 에 대해 서 는 이 노 DB 저장 엔진 이 클 러 스 터 드(clustered)방식 을 적용 해 테이블 마다 메 인 키 순 으로 저장 되 는데,테이블 정의 시 메 인 키 를 명시 적 으로 지정 하지 않 으 면 이 노 DB 저장 엔진 은 각 줄 에 6 바이트 의 줄 ID(ROWID)를 생 성하 고 이 를 메 인 키 로 삼 는 다.InnoDB 저장 엔진 은 MySQL 데이터베이스 에서 가장 자주 사용 되 는 엔진 으로 페 이 스 북,구 글,Yaoo 등 회사 의 성공 적 인 응용 은 InnoDB 저장 엔진 이 높 은 가용성,고성능 과 높 은 확장 성 을 가지 고 있다 는 것 을 증명 했다.밑바닥 실현 에 대한 파악 과 이해 도 시간 과 기술 의 축적 이 필요 하 다.
이 노 DB 메모리 엔진 의 작 동 원리,구현 과 활용 에 대해 깊이 알 고 싶다 면'MySQL 기술 내막:InnoDB 메모리 엔진'라 는 책 을 참고 하면 된다.
MyISAM
트 랜 잭 션,잠 금 디자인,전체 텍스트 색인 을 지원 하지 않 습 니 다.주로 OLAP 데이터 베 이 스 를 대상 으로 합 니 다.MySQL 5.5.8 버 전에 서 는 기본 저장 엔진(Windows 버 전 제외)이 었 습 니 다.데이터베이스 시스템 과 파일 시스템 의 큰 차이 점 은 업무 에 대한 지원 이다.MyISAM 저장 엔진 은 업 무 를 지원 하지 않 는 다.
근본 을 따 져 보면 이것 도 결코 이해 하기 어렵 지 않다.사용 자 는 모든 응용 프로그램 에서 업무 가 필요 합 니까?데이터 창고 에서 ETL 같은 조작 이 없 으 면 보고 서 를 통 해 간단하게 조회 하 는 데 업무 지원 이 필요 합 니까?또한,MyISAM 저장 엔진 의 또 다른 점 은 버퍼 풀 은 데이터 파일 을 캐 시 하지 않 고 캐 시(cache)색인 파일 만 캐 시 하 는 것 입 니 다.이것 은 대부분의 데이터 베이스 와 다 릅 니 다.
NDB
2003 년 에 MysqlAB 회 사 는 소니 에 릭 슨 회사 에서 NDB 메모리 엔진 을 인수 했다.
NDB 메모리 엔진 은 클 러 스 터 메모리 엔진 으로 Oracle 의 RAC 클 러 스 터 와 유사 하지만 Oracle RAC 의 share everythin 구조 와 달리 그 구 조 는 share nothing 의 클 러 스 터 구조 이기 때문에 더욱 높 은 등급 의 가용성 을 제공 할 수 있다.
NDB 저장 엔진 은 데이터 가 모두 메모리 에 저장 되 어 있 는 것 이 특징 입 니 다(5.1 버 전부터 비 색인 데 이 터 를 디스크 에 놓 을 수 있 습 니 다).따라서 홈 키 찾기(primary key lookups)의 속도 가 매우 빠 르 고 NDB 데이터 저장 노드(data node)를 온라인 으로 추가 하여 데이터베이스 성능 을 선형 으로 향상 시 킬 수 있 습 니 다.
이 를 통 해 알 수 있 듯 이 NDB 메모리 엔진 은 고가 용,고성능,확장 성 이 높 은 데이터베이스 집단 시스템 으로 OLTP 의 데이터베이스 응용 유형 을 대상 으로 한다.
Memory
이름 그대로 메모리 저장 엔진 의 데 이 터 는 메모리 에 저 장 됩 니 다.
데이터 베 이 스 를 다시 시작 하거나 충돌 하면 표 의 데이터 가 사라 집 니 다.이것 은 OLTP 데이터베이스 응용 에서 임시 데 이 터 를 저장 하 는 임시 테이블 에 매우 적합 하 며,OLAP 데이터베이스 응용 에서 데이터 창고 의 차원 테이블 로 도 사용 할 수 있다.
메모리 메모리 엔진 은 일반적으로 익숙 한 B+트 리 인덱스 가 아 닌 해시 인덱스 를 기본적으로 사용 합 니 다.
Infobright
 제3자 저장 엔진.
줄 이 아 닌 열 에 따라 저장 되 는 것 이 특징 이 므 로 OLAP 의 데이터베이스 응용 에 매우 적합 하 다.
그 공식 사 이 트 는http://www.infobright.org/로 위 에 성공 적 인 데이터 창고 사례 를 분석 할 수 있다.
NTSE
왕 이 회사 가 개발 한 내부 용 메모리 엔진.
현재 버 전 은 사 무 를 지원 하지 않 지만 압축,줄 캐 시 등 기능 을 제공 하여 머지않아 메모리 에 대한 사무 지원 을 실현 할 것 입 니 다.
BLACKHOLE
구멍 저장 엔진 은 메 인 복사 에 사용 할 수 있 는 배포 메 인 라 이브 러 리 입 니 다.
엔진 설정
건축 표 지정
표 문 구 를 만 든 후engine키 워드 를 사용 하면 저장 엔진 을 지정 할 수 있 습 니 다.
테이블 이름(id int,name char)engine=저장 엔진(기본 innodb)을 만 듭 니 다.
다음은 temp 임시 표를 만 들 고 memory 저장 엔진 을 사용 합 니 다.

mysql> create table temp(id int) engine=memory;
Query OK, 0 rows affected (0.01 sec)

mysql> show create table temp; #       
+-------+------------------------------------------------------------------------------------------+
| Table | Create Table                                       |
+-------+------------------------------------------------------------------------------------------+
| temp | CREATE TABLE `temp` (
 `id` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1 |
+-------+------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
memory 의 데 이 터 는 MySQL 서 비 스 를 닫 을 때 비 워 집 니 다.
Blackhole 저장 엔진 의 특징 은 몇 개의 기록 표를 삽입 하 더 라 도 영원히 저장 되 지 않 는 다 는 것 이다.
설정 지정
설정 파일 에서 도 표를 만 들 때의 저장 엔진 을 지정 할 수 있 습 니 다.

[mysqld]
#               
default-storage-engine=INNODB
파일 구조
여기 서 InnoDB 를 예 로 들 면,우 리 는 먼저 student 표를 만 들 고,그 파일 구 조 를 살 펴 봅 니 다.

mysql> create table student(id int) engine=innodb;
Query OK, 0 rows affected (0.02 sec)

student.frm 는 필드 와 같은 표 구조 로 저 장 됩 니 다.
student.ibd 는 표 데이터,예 를 들 어 기록 등 정 보 를 저장 합 니 다.
이상 은 MySQL 의 저장 엔진 에 대한 상세 한 내용 을 이야기 하 는 것 입 니 다.MySQL 저장 엔진 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기