Mysql 에 저 장 된 엔진 의 차이 및 비교

MyISAM 메모리 엔진
MyISAM 은 ISAM 저장 엔진 을 기반 으로 확장 된다.그것 은 웹,데이터 창고 와 다른 응용 환경 에서 가장 자주 사용 하 는 저장 엔진 중 하나 이다.MyISAM 은 비교적 높 은 삽입,조회 속 도 를 가지 고 있 지만 사 무 는 지원 되 지 않 습 니 다.
MyISAM 의 주요 특성 은 다음 과 같다.
1.큰 파일(63 비트 파일 길이)은 큰 파일 을 지원 하 는 파일 시스템 과 운영 체제 에서 지 원 됩 니 다.
2.삭제 와 업데이트 및 삽입 작업 을 혼합 하여 사용 할 때 동적 사이즈 의 줄 은 조각 이 더 적 습 니 다.이것 은 인접 한 삭 제 된 블록 을 통합 하고 다음 블록 이 삭제 되면 다음 블록 으로 확장 하여 자동 으로 완성 합 니 다.
3.각 MyISAM 표 의 최대 색인 수 는 64 로 재 컴 파일 을 통 해 변경 할 수 있 습 니 다.색인 마다 가장 큰 열 수 는 16 이다.
4.NULL 은 색인 열 에서 사용 할 수 있 습 니 다.이 값 은 키 당 0~1 바이트 입 니 다.
5.데이터 파일 과 색인 파일 을 다른 디 렉 터 리 에 넣 을 수 있 습 니 다(InnoDB 는 한 디 렉 터 리 에 넣 습 니 다)
MyISAM 엔진 은 B+Tree 를 색인 구조 로 사용 하고 잎 노드 의 data 필드 는 데이터 기록 주소 로 저 장 됩 니 다.
다음 그림 은 MyISAM 색인 의 원리 그림 입 니 다.
MyISAM索引的原理图
여기에 표 가 모두 세 열 로 되 어 있 습 니 다.만약 에 우리 가 Col 1 을 메 인 키 로 한다 고 가정 하면 위의 그림 은 MyISAM 표 의 메 인 색인(Primary key)의 뜻 입 니 다.
MyISAM 의 색인 파일 은 데이터 기록 의 주소 만 저장 한 다 는 것 을 알 수 있다.
MyISAM 에서 주 색인 과 보조 색인(Secondary key)은 구조 적 으로 차이 가 없 으 며,주 색인 은 key 가 유일한 것 이 고,보조 색인 키 는 중복 할 수 있 습 니 다.
만약 에 우리 가 Col 2 에 보조 색인 을 만 들 면 이 색인 의 구 조 는 다음 과 같다.
辅助索引的原理图
데이터 기록 을 저장 하 는 B+Tree 주소 이기 도 합 니 다.
따라서 MyISAM 에서 색인 검색 알고리즘 은 먼저 B+Tree 검색 알고리즘 에 따라 색인 을 검색 하고,지정 한 Key 가 존재 하면 data 필드 의 값 을 추출 한 다음 data 필드 의 값 을 주소 로 하여 해당 데이터 기록 을 읽 는 것 입 니 다.
마 이 ISAM 의 색인 방식 을'비 집합'이 라 고도 하 는데,이 노 DB 의 집합 색인 과 구분 하기 위 한 것 이다.
InnoDB 메모리 엔진
이 노 DB 는 사무 형 데이터베이스 의 최 우선 엔진 으로,사무 안전 표(ACID)를 지원 하고,줄 잠 금과 외부 키 를 지원 하 며,위의 그림 에서 도 보 듯 이 이 노 DB 는 기본 MySQL 엔진 이다.
InnoDB 의 주요 특성 은:
1.InnoDB 는 MySQL 에 제출,스크롤 백,붕괴 회복 능력 을 가 진 사물 안전(ACID 호 환)저장 엔진 을 제공 합 니 다.InnoDB 는 줄 에 잠 겨 있 고 SELECT 구문 에서 Oracle 과 유사 한 비 잠 금 읽 기 를 제공 합 니 다.이 기능 들 은 다 중 사용자 배치 와 성능 을 증가 시 켰 다.SQL 조회 에 서 는 InnoDB 형식의 표 와 다른 MySQL 의 표 형식 을 자 유 롭 게 혼합 할 수 있 으 며,심지어 같은 조회 에서 도 혼합 할 수 있다.
2.InnoDB 는 엄 청 난 데 이 터 량 을 처리 하기 위 한 최대 성능 디자인 입 니 다.그것 의 CPU 효율 은 디스크 기반 의 관계 형 데이터베이스 엔진 잠 금 에 필적 할 수 없 을 것 이다.
3.InnoDB 저장 엔진 은 MySQL 서버 와 완전히 통합 되 고 InnoDB 저장 엔진 은 메 인 메모리 에 데이터 와 색인 을 캐 시 하기 위해 자신의 버퍼 를 유지 합 니 다.InnoDB 는 표 와 색인 을 논리 표 공간 에 포함 시 키 고 표 공간 은 여러 개의 파일(또는 원본 디스크 파일)을 포함 할 수 있 습 니 다.이 는 MyISAM 표 와 달리,예 를 들 어 MyISAM 표 에 있 는 표 마다 분 리 된 파일 에 저 장 됩 니 다.파일 크기 가 2GB 로 제 한 된 운영 체제 에서 도 InnoDB 표 는 모든 크기 일 수 있 습 니 다.
4.InnoDB 는 외부 키 의 완전 성 제약 을 지원 합 니 다.테이블 에 있 는 데 이 터 를 저장 할 때 모든 테이블 의 저장 소 는 메 인 키 순 으로 저 장 됩 니 다.테이블 정의 에 메 인 키 를 지정 하지 않 으 면 InnoDB 는 각 줄 에 6 바이트 의 ROWID 를 생 성하 고 이 를 메 인 키 로 합 니 다.
이 노 DB 도 색인 구조 로 B+Tree 를 사 용 했 지만,구체 적 인 구현 방식 은 마 이 ISAM 과 는 사뭇 달 랐 다.
첫 번 째 큰 차이 점 은 이 노 DB 의 데이터 파일 자체 가 색인 파일 이라는 점 이다.
위의 글 에서 알 수 있 듯 이 MyISAM 색인 파일 과 데이터 파일 은 분리 되 어 있 으 며 색인 파일 은 데이터 기록 의 주소 만 저장 합 니 다.
한편,InnoDB 에서 표 데이터 파일 자체 가 B+Tree 로 구 성 된 색인 구조 로 이 나무의 잎 노드 data 도 메 인 은 완전한 데이터 기록 을 저장 했다.
이 색인 키 는 데이터 시트 의 주 키 이기 때문에 InnoDB 표 데이터 파일 자체 가 주 색인 입 니 다.
InnoDB主索引
위의 그림 은 InnoDB 메 인 색인(동시에 데이터 파일)의 설명도 로 잎 노드 에 완전한 데이터 기록 이 포함 되 어 있 음 을 볼 수 있다.
이런 색인 을 집합 색인 이 라 고 한다.InnoDB 의 데이터 파일 자체 가 메 인 키 를 눌 러 모 아야 하기 때문에 InnoDB 요구 표 에는 메 인 키(MyISAM 은 없 을 수 있 습 니 다)가 있어 야 합 니 다.명시 적 지정 이 없 으 면 MySQL 시스템 은 데이터 기록 을 유일 하 게 표시 할 수 있 는 열 을 메 인 키 로 자동 으로 선택 합 니 다.이 열 이 존재 하지 않 으 면 MySQL 은 자동 으로 InnoDB 표 에 함 축 된 필드 를 메 인 키 로 생 성 합 니 다.이 필드 의 길 이 는 6 바이트 이 며,유형 은 긴 성형 이다.
두 번 째 는 MyISAM 색인 과 달리 InnoDB 의 보조 색인 data 필드 에 주소 가 아 닌 메 인 키 를 기록 하 는 값 을 저장 합 니 다.이 노 DB 의 모든 보조 색인 은 홈 키 를 data 필드 로 참조 한 것 이다.
예 를 들 어 다음 그림 은 Col 3 에 있 는 보조 색인 을 정의 합 니 다.
辅助索引
이곳 은 영문 문자 의 ASCII 코드 를 비교 준칙 으로 한다.색인 을 모 으 는 이러한 실현 방식 은 메 인 키 를 누 르 는 검색 을 매우 효율 적 으로 하지만 보조 색인 검색 은 두 번 의 색인 을 검색 해 야 한다.먼저 보조 색인 을 검색 하여 메 인 키 를 얻 은 다음 에 메 인 키 로 메 인 색인 에서 검색 하여 기록 을 얻는다.
서로 다른 저장 엔진 의 색인 실현 방식 을 이해 하 는 것 은 색인 을 정확하게 사용 하고 최적화 하 는 데 매우 도움 이 된다.예 를 들 어 InnoDB 의 색인 이 실 현 된 것 을 알 게 되면 왜 긴 필드 를 메 인 키 로 사용 하 는 것 을 권장 하지 않 는 지 쉽게 알 수 있다.모든 보조 색인 은 메 인 색인 을 인용 하기 때문에 너무 긴 메 인 색인 은 보조 색인 을 너무 크게 만 들 수 있다.
예 를 들 어 단조 로 운 필드 를 메 인 키 로 사용 하 는 것 은 InnoDB 에서 좋 은 생각 이 아 닙 니 다.InnoDB 데이터 파일 자체 가 B+Tree 이기 때문에 단조 로 운 메 인 키 가 아 닌 데이터 파일 은 새로운 기록 을 삽입 할 때 B+Tree 의 특성 을 유지 하기 위해 자주 분열 조정 을 하여 매우 비효 율 적 이 고 자체 증가 필드 를 메 인 키 로 사용 하 는 것 이 좋 습 니 다.
메모리 엔진
MEMORY 메모리 엔진 은 표 의 데 이 터 를 메모리 에 저장 하고 다른 표 데 이 터 를 조회 하거나 참조 하지 않 아 빠 른 접근 을 제공 합 니 다.
MEMORY 의 주요 특성 은:
1.MEMORY 표 의 표 마다 32 개의 색인 이 있 고 각 색인 16 열 과 500 바이트 의 최대 키 길이 가 있 습 니 다.
2,메모리 엔진 실행 HASH 와 BTREE 축소판
3.하나의 MEMORY 표 에 유일한 키 가 아 닌 키 가 있 을 수 있 습 니 다.
4.MEMORY 표 는 고정된 기록 길이 형식 을 사용 합 니 다.
5.MEMORY 는 BLOB 또는 TEXT 열 을 지원 하지 않 습 니 다.
6,MEMORY 지원 AUTOINCREMENT 열 과 NULL 값 을 포함 할 수 있 는 열 에 대한 색인
7.MEMORY 표 는 클 라 이언 트 간 에 공 유 됩 니 다(TEMPORARY 표 가 아 닌 다른 것 처럼)
8.메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리 메모리
9.더 이상 MEMORY 표 의 내용 이 필요 하지 않 을 때 MEMORY 표 에 사 용 된 메모 리 를 방출 하려 면 DELETE FROM 또는 TRUNCATE TABLE 을 실행 하거나 표 전 체 를 삭제 해 야 합 니 다(DROP TABLE 사용)
아 카 이브 저장 엔진 저장 엔진 선택
서로 다른 저장 엔진 은 모두 각자 의 특징 을 가지 고 서로 다른 수요 에 적응 하기 위해 다음 과 같다.

InnoDB:제출,스크롤 백,충돌 회 복 력 의 사무 안전(ACID 호 환)능력 을 제공 하고 병행 통 제 를 요구 하려 면 InnoDB 가 좋 은 선택 입 니 다.
InnoDB 와 MyISAM 의 차이 점:
1>.InnoDB 는 사물 을 지원 하지만 MyISAM 은 사물 을 지원 하지 않 습 니 다.
2>.InnoDB 는 줄 잠 금 을 지원 하고 MyISAM 은 표 잠 금 을 지원 합 니 다.
3>.InnoDB 는 MVCC 를 지원 하지만 MyISAM 은 지원 하지 않 습 니 다.
4>.InnoDB 는 외부 키 를 지원 하지만 MyISAM 은 지원 하지 않 습 니 다.
5>.InnoDB 는 전체 텍스트 인덱스 를 지원 하지 않 고 MyISAM 은 지원 합 니 다.(X)
MyISAM:데이터 시트 가 기록 을 삽입 하고 조회 하 는 데 주로 사용 된다 면 MyISAM 엔진 은 비교적 높 은 처리 효율 을 제공 할 수 있 습 니 다.
Memory:데 이 터 를 임시로 저장 할 뿐 데이터 양 이 많 지 않 고 높 은 데이터 안전성 이 필요 하지 않 으 면 데 이 터 를 메모리 에 저장 하 는 Memory 엔진 을 선택 할 수 있 습 니 다.MySQL 에 서 는 이 엔진 을 임시 표 로 사용 하여 조회 의 중간 결 과 를 저장 할 수 있 습 니 다.데이터 의 처리 속 도 는 매우 빠 르 지만 안전성 은 높 지 않다.
아 카 이브:INSERT 와 SELECT 만 작 동 하면 아 카 이브 를 선택 할 수 있 습 니 다.아 카 이브 는 동시 다발 적 인 삽입 작업 을 지원 하지만 그 자체 가 안전 하지 않 습 니 다.아 카 이브 는 로그 정 보 를 기록 할 때 아 카 이브 를 사용 할 수 있 는 압축 파일 데 이 터 를 저장 하기에 매우 적합 하 다.
어떤 엔진 을 사용 하려 면 유연 한 선택 이 필요 합 니까?하나의 데이터베이스 에 있 는 여러 개의 시 계 는 서로 다른 엔진 을 사용 하여 각종 성능 과 실제 수 요 를 만족 시 킬 수 있 습 니 다.적당 한 저장 엔진 을 사용 하면 전체 데이터 뱅 크 의 성능 을 향상 시 킬 수 있 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기