MySql: MyISAM vs.이노 DB!
MySql에서 MyISAM과 Inno DB 유형의 차이점은 무엇입니까?
가장 큰 차이점은 InnoDB는 트랜잭션을 지원하고 MyISAM은 지원하지 않는다는 것입니다.
그 밖에도 수많은 차이점이 있지만, 제가 알고 있는 공통점은 다음과 같습니다.
- My ISAM은 일반적으로 검색 속도가 빠른 것으로 간주되어 왔으나, 최근 InnoDB의 개선으로 이러한 차이가 해소되고 동시성이 높은 워크로드 성능이 향상되고 있습니다.
- InnoDB는 트랜잭션을 지원하지만 MyISAM은 지원하지 않습니다.
- InnoDB는 참조 무결성을 지원하는 반면 My ISAM은 지원하지 않습니다.
- InnoDB는 인덱스를 약간 다르게 처리하여 기본 키를 모든 인덱스의 일부로 저장합니다(인덱스가 디스크에서 더 많은 공간을 차지하도록 만들지만 커버링 인덱스도 더 많이 사용할 가능성이 있음).
- 내 ISAM은 테이블 레벨 잠금을 수행하고 InnoDB는 행 레벨 잠금을 수행할 수 있습니다.
- MySQL 구성 파일에 서로 다른 메모리/버퍼/인덱스 설정이 사용됨
- InnoDB는 일반적으로 크래시 복구가 더 우수하다고 합니다.
- 다른 답변에서 언급한 것처럼 데이터는 디스크에 다르게 저장됩니다.InnoDB는 이 영역에서 구성 가능하며 필요시 테이블당 하나의 파일 등을 가질 수 있다고 생각합니다.
구글 검색이나 MySQL 사이트를 이용하면 다른 수많은 차이점들이 더 자세히 나타날 것이라고 확신합니다.
InnoDB 및 My ISAM
기능 및 성능 비교:
- InnoDB는 My ISAM이 오래된 반면에 최신 버전입니다.
- InnoDB는 더 복잡하지만 My ISAM은 더 간단합니다.
- InnoDB는 My ISAM이 느슨하고 데이터 무결성이 더 엄격합니다.
- InnoDB는 삽입 및 업데이트를 위해 행 수준의 잠금을 구현하며 MyISAM은 테이블 수준의 잠금을 구현합니다.
- InnoDB에는 트랜잭션이 있고 MyISAM에는 트랜잭션이 없습니다.
- InnoDB는 외부 키와 관계 제약이 있는 반면 MyISAM은 그렇지 않습니다.
- InnoDB는 시스템 충돌 시 데이터 무결성을 복구하는 능력이 떨어지는 반면 MyISAM은 충돌 복구 능력이 더 뛰어납니다.
- 내 ISAM은 전체 텍스트 검색 인덱스를 가지고 있는 반면 InnoDB는 그렇지 않습니다.
이러한 차이에 비추어 볼 때, InnoDB와 MyISAM은 서로 다른 장점과 단점을 가지고 있습니다.이들은 각각 다른 시나리오보다 일부 시나리오에서 더 적합합니다.
InnoDB의 장점
- InnoDB는 본질적으로 관계 제약 및 트랜잭션을 통해 데이터 무결성을 관리하기 때문에 데이터 무결성이 우선시되는 곳에서 사용해야 합니다.
- 행 수준 잠금 기능을 사용하고 삽입 또는 업데이트 중인 행과 동일한 행에 대한 변경만 보류하기 때문에 쓰기 집약적(삽입, 업데이트) 테이블에서 더 빠릅니다.
InnoDB의 단점
- InnoDB는 테이블 간의 서로 다른 관계를 처리해야 하기 때문에 데이터베이스 관리자와 스킴 작성자는 MyISAM보다 더 복잡한 데이터 모델을 설계하는 데 더 많은 시간을 들여야 합니다.
- RAM과 같은 시스템 리소스를 더 많이 사용합니다.실제로 MySQL을 설치한 후 InnoDB 엔진에 대한 실질적인 필요성이 없다면 엔진을 끄는 것이 좋습니다.
- 전체 텍스트 색인이 없습니다.
My ISAM의 장점
- 설계 및 제작이 간단하여 초보자에게 더 적합합니다.테이블 사이의 외연에 대한 걱정은 없습니다.
- 전체적으로 InnoDB보다 구조가 간단하기 때문에 서버 리소스의 비용이 훨씬 적게 듭니다.
- 전체 텍스트 색인.
- 읽기 집약적(선택) 테이블에 특히 적합합니다.
My ISAM의 단점
- 데이터 무결성(예: 관계 제약) 검사를 하지 않음으로써 데이터베이스 관리자와 애플리케이션 개발자의 책임과 오버헤드가 발생합니다.
- 은행 업무와 같은 중요한 데이터 애플리케이션에서 필수적인 트랜잭션을 지원하지 않습니다.
- 삽입 또는 업데이트를 위해 전체 테이블이 잠겨 있기 때문에 자주 삽입 또는 업데이트되는 테이블의 경우 InnoDB보다 느립니다.
비교는 꽤 간단합니다.InnoDB는 빈번한 삽입 및 업데이트가 필요한 데이터 중요 상황에 더 적합합니다.반면, My ISAM은 데이터 무결성에 크게 의존하지 않고 대부분 데이터를 선택하여 표시하는 애플리케이션에서 더 나은 성능을 발휘합니다.
자세한 내용은 여기에서 확인할 수 있습니다: My ISAM or InnoDB MySQL 엔진?
도움이 되길 바랍니다.
My ISAM은 InnoDB가 여전히 지원하지 않는 (비표준-SQL) 전체 텍스트 색인을 지원합니다.이것이 우리가 오늘날 My ISAM을 사용하는 유일한 이유입니다.
MyISAM과 InnoDB의 가장 중요한 차이점은 InnoDB가 트랜잭션과 외국키를 지원한다는 것입니다.외부 키 및 관련 기능(예: 자동 계단식 삭제)이 필요한 경우 InnoDB를 사용해야 합니다.
InnoDB는 대부분의 경우 MyISAM보다 느리지만 더 나은 잠금 메커니즘으로 인해 특정 조건에서 더 빠르게 수행될 수 있습니다. MyISAM은 삽입/업데이트가 실행되는 동안 읽기 위해 전체 테이블을 잠급니다.InnoDB는 행 수준의 잠금을 수행할 수 있으므로 테이블에 여러 개의 동시 쓰기와 읽기를 허용합니다.
MySQL 설명서에서 MyISAM & InnoDB에 대한 자세한 정보를 확인할 수 있습니다.
http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html
http://dev.mysql.com/doc/refman/5.1/en/innodb-overview.html
가장 큰 차이점은 InnoDB가 트랜잭션을 지원하는 반면 MyISAM은 지원하지 않는다는 것입니다.
My ISAM과 InnoDB는 디스크에 데이터를 다르게 저장하기도 합니다.My ISAM은 데이터베이스의 이름을 딴 디렉토리에 저장된 각 테이블에 대해 데이터 파일과 인덱스 파일을 사용합니다.InnoDB는 ibdata1이라는 파일로 모든 것을 하나로 묶는 것 같습니다.
NFS 지원
My ISAM과 달리 InnoDB는 NFS에서 문제가 발생할 수 있습니다.
주의
데이터에 대한 안정성을 고려할 경우 NFS 볼륨에서 데이터 파일 또는 로그 파일을 사용하도록 InnoDB를 구성하지 마십시오.잠재적인 문제는 NFS의 OS 및 버전에 따라 다르며, 충돌하는 쓰기로부터 보호받지 못하는 문제, 최대 파일 크기 제한 등이 있습니다.
InnoDB 기능 1.완전한 ACID(원자성, 일관성, 격리 및 내구성) 준수를 통해 완전한 트랜잭션 기능을 제공합니다.
행 레벨 잠금 기능이 있습니다.행 수준 잠금을 지원함으로써 엔진이 삽입할 때마다 테이블을 잠그지 않고도 InnoDB 테이블에 데이터를 추가할 수 있으며 이를 통해 데이터베이스의 정보 복구와 저장 속도가 모두 빨라집니다.
InnoDB 시스템의 핵심은 인덱스와 데이터가 모두 메모리에 캐싱되고 디스크에 저장되는 데이터베이스, 캐싱 및 인덱싱 구조입니다. 이를 통해 매우 빠른 복구가 가능하며, 매우 큰 데이터 세트에서도 작동합니다.
InnoDB는 외부 키 제약 조건을 지원합니다.
- InnoDB는 자동 충돌 복구를 지원합니다.
- InnoDB는 테이블 압축(읽기/쓰기)을 지원합니다.
InnoDB는 공간 데이터 유형 지원(공간 인덱스 없음)
Innodb는 Non-locking ANALIZE TABLE을 지원하며, 서버가 인덱스 통계를 분석하고 테이블이 열릴 때 인덱스 정보를 가져오기 때문에 서버가 오랫동안 실행된 경우에만 필요합니다.
Innodb에는 별도의 인덱스 파일이 없으므로 열 필요가 없습니다.
Innodb는 인덱스를 기본 키 순서(ALTER 후)로 한 번에 한 행씩 구축합니다. 즉, 인덱스 트리가 최적의 순서로 구축되지 않고 단편화되어 있습니다.InnoDB가 MySQL 5.0에서 정렬하여 인덱스를 빌드할 수 없으므로 InnoDB 인덱스를 조각 모음할 수 있는 방법은 현재 없습니다.InnoDB 인덱스를 삭제하고 다시 생성해도 데이터에 따라 인덱스가 조각화될 수 있습니다.
테이블에는 최대 1000개의 열을 포함할 수 있습니다.
InnoDB 내부 최대 키 길이는 3500바이트이지만 MySQL 자체는 이를 3072바이트로 제한합니다.(MySQL 5.0.17 이전의 64비트가 아닌 빌드와 5.0.15 이전의 모든 빌드의 경우 1024바이트입니다.
- InnoDB의 기본 데이터베이스 페이지 크기는 16KB입니다.코드를 다시 컴파일하면 8KB에서 64KB 사이의 값으로 설정할 수 있습니다.UNIV_PAGE_SIZE 및 UNIV_PAGE_SIZE_SIZE_SHIFT 값을 univ.i 소스 파일에서 업데이트해야 합니다.
InnoDB 테이블은 FULLTEXT 인덱스를 지원하지 않습니다.
MYISAM 특징
- 트랜잭션 지원 없음
- 테이블 레벨 잠금
- 전체 텍스트 검색을 제공합니다.
- 테이블의 데이터에 제한이 없습니다.
- fast COUNT(*)s(WHERE, GROUP BY, JOIN이 사용되지 않는 경우)
- 전문 색인 작성
- 디스크 설치 공간 감소
- 매우 높은 테이블 압축(읽기 전용)
- 공간 데이터 유형 및 인덱스(R-tree)
- DATA DIRECTORY='/path/to/data/directory' 또는 INDEX DIRECTORY='/path/to/index/directory'를 사용하여 MyISAM 스토리지 엔진이 테이블의 데이터 파일 및 인덱스 파일을 저장할 위치를 지정할 수 있습니다.디렉토리는 상대 경로가 아니라 디렉토리의 전체 경로 이름이어야 합니다.
자세한 내용은 http://faisalbhagat.blogspot.com/2014/09/innodb-vs-myisam.html 에서 확인하실 수 있습니다.
InnoDB와 MyIsam의 차이점에 대한 설명은 다음과 같습니다.
몇 가지 차이점:
- MYISAM은 어떠한 데이터베이스 트랜잭션도 지원하지 않습니다.
- INNODB는 거래를 제공할 것입니다.
- MYISAM은 테이블 레벨 잠금 기능을 제공합니다.
- INODB는 로우 레벨 잠금 기능을 제공합니다.
- INNOBD는 외국 키를 지원하고 MYISAM은...
내 ISAM은 모든 테이블을 잠그고 파일을 파일 시스템에 직접 복사하는 것이 훨씬 간단하기 때문에 백업이 더욱 편리합니다.(perl-script인 mysql hotcopy는 mysql afaik의 일부이기도 합니다.)
InnoDB는 조금 더 복잡하며 파일을 복사하는 것만으로는 다른 컴퓨터에서 즉시 복원할 수 없기 때문에 불가능합니다.
그러나 InnoDB 핫카피를 제공하는 상용 소프트웨어가 있습니다.
트랜잭션 지원이 가장 큰 차이점이지만, UPDATE 문과 함께 장기간 실행 중인 SELECT 쿼리가 있는 경우 테이블 수준 잠금이 문제가 될 수 있습니다.
언급URL : https://stackoverflow.com/questions/277440/mysql-myisam-vs-inno-db
'programing' 카테고리의 다른 글
자바 결과 집합을 JSON으로 변환하는 방법은? (0) | 2023.10.28 |
---|---|
Spring Data Rest를 사용할 때 @Repository를 구성 요소 검색에서 제외하는 방법 (0) | 2023.10.28 |
컨트롤러 asp.net -core에서 최신 문화 가져오기 (0) | 2023.10.28 |
PHP가 업로드된 파일을 임시 위치에 저장하는 이유와 이점은 무엇입니까? (0) | 2023.10.28 |
Oracle에서 문자열의 단어 수를 계산하려면 어떻게 해야 합니까? (0) | 2023.10.28 |