Mysql 에 저 장 된 엔진 의 차이 및 비교
MyISAM 은 ISAM 저장 엔진 을 기반 으로 확장 된다.그것 은 웹,데이터 창고 와 다른 응용 환경 에서 가장 자주 사용 하 는 저장 엔진 중 하나 이다.MyISAM 은 비교적 높 은 삽입,조회 속 도 를 가지 고 있 지만 사 무 는 지원 되 지 않 습 니 다.
MyISAM 의 주요 특성 은 다음 과 같다.
1.큰 파일(63 비트 파일 길이)은 큰 파일 을 지원 하 는 파일 시스템 과 운영 체제 에서 지 원 됩 니 다.
2.삭제 와 업데이트 및 삽입 작업 을 혼합 하여 사용 할 때 동적 사이즈 의 줄 은 조각 이 더 적 습 니 다.이것 은 인접 한 삭 제 된 블록 을 통합 하고 다음 블록 이 삭제 되면 다음 블록 으로 확장 하여 자동 으로 완성 합 니 다.
3.각 MyISAM 표 의 최대 색인 수 는 64 로 재 컴 파일 을 통 해 변경 할 수 있 습 니 다.색인 마다 가장 큰 열 수 는 16 이다.
4.NULL 은 색인 열 에서 사용 할 수 있 습 니 다.이 값 은 키 당 0~1 바이트 입 니 다.
5.데이터 파일 과 색인 파일 을 다른 디 렉 터 리 에 넣 을 수 있 습 니 다(InnoDB 는 한 디 렉 터 리 에 넣 습 니 다)
MyISAM 엔진 은 B+Tree 를 색인 구조 로 사용 하고 잎 노드 의 data 필드 는 데이터 기록 주소 로 저 장 됩 니 다.
다음 그림 은 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 요구 표 에는 메 인 키(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 만 작 동 하면 아 카 이브 를 선택 할 수 있 습 니 다.아 카 이브 는 동시 다발 적 인 삽입 작업 을 지원 하지만 그 자체 가 안전 하지 않 습 니 다.아 카 이브 는 로그 정 보 를 기록 할 때 아 카 이브 를 사용 할 수 있 는 압축 파일 데 이 터 를 저장 하기에 매우 적합 하 다.
어떤 엔진 을 사용 하려 면 유연 한 선택 이 필요 합 니까?하나의 데이터베이스 에 있 는 여러 개의 시 계 는 서로 다른 엔진 을 사용 하여 각종 성능 과 실제 수 요 를 만족 시 킬 수 있 습 니 다.적당 한 저장 엔진 을 사용 하면 전체 데이터 뱅 크 의 성능 을 향상 시 킬 수 있 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 my sql 에 이모 티 콘 저장my sql 에 emoji 표정 을 저장 하려 면 utf8mb 4 문자 집합 을 사용 해 야 합 니 다. 이것 은 4 바이트 저장 입 니 다. 최소 지원 버 전 은 5.5.3 + 입 니 다. 그렇지 않 으 면 새로운...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.