programing

MySql: MyISAM vs.이노 DB!

muds 2023. 10. 28. 08:18
반응형

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

기능 및 성능 비교:

  1. InnoDB는 My ISAM이 오래된 반면에 최신 버전입니다.
  2. InnoDB는 더 복잡하지만 My ISAM은 더 간단합니다.
  3. InnoDB는 My ISAM이 느슨하고 데이터 무결성이 더 엄격합니다.
  4. InnoDB는 삽입 및 업데이트를 위해 행 수준의 잠금을 구현하며 MyISAM은 테이블 수준의 잠금을 구현합니다.
  5. InnoDB에는 트랜잭션이 있고 MyISAM에는 트랜잭션이 없습니다.
  6. InnoDB는 외부 키와 관계 제약이 있는 반면 MyISAM은 그렇지 않습니다.
  7. InnoDB는 시스템 충돌 시 데이터 무결성을 복구하는 능력이 떨어지는 반면 MyISAM은 충돌 복구 능력이 더 뛰어납니다.
  8. 내 ISAM은 전체 텍스트 검색 인덱스를 가지고 있는 반면 InnoDB는 그렇지 않습니다.

이러한 차이에 비추어 볼 때, InnoDB와 MyISAM은 서로 다른 장점과 단점을 가지고 있습니다.이들은 각각 다른 시나리오보다 일부 시나리오에서 더 적합합니다.

InnoDB의 장점

  1. InnoDB는 본질적으로 관계 제약 및 트랜잭션을 통해 데이터 무결성을 관리하기 때문에 데이터 무결성이 우선시되는 곳에서 사용해야 합니다.
  2. 행 수준 잠금 기능을 사용하고 삽입 또는 업데이트 중인 행과 동일한 행에 대한 변경만 보류하기 때문에 쓰기 집약적(삽입, 업데이트) 테이블에서 더 빠릅니다.

InnoDB의 단점

  1. InnoDB는 테이블 간의 서로 다른 관계를 처리해야 하기 때문에 데이터베이스 관리자와 스킴 작성자는 MyISAM보다 더 복잡한 데이터 모델을 설계하는 데 더 많은 시간을 들여야 합니다.
  2. RAM과 같은 시스템 리소스를 더 많이 사용합니다.실제로 MySQL을 설치한 후 InnoDB 엔진에 대한 실질적인 필요성이 없다면 엔진을 끄는 것이 좋습니다.
  3. 전체 텍스트 색인이 없습니다.

My ISAM의 장점

  1. 설계 및 제작이 간단하여 초보자에게 더 적합합니다.테이블 사이의 외연에 대한 걱정은 없습니다.
  2. 전체적으로 InnoDB보다 구조가 간단하기 때문에 서버 리소스의 비용이 훨씬 적게 듭니다.
  3. 전체 텍스트 색인.
  4. 읽기 집약적(선택) 테이블에 특히 적합합니다.

My ISAM의 단점

  1. 데이터 무결성(예: 관계 제약) 검사를 하지 않음으로써 데이터베이스 관리자와 애플리케이션 개발자의 책임과 오버헤드가 발생합니다.
  2. 은행 업무와 같은 중요한 데이터 애플리케이션에서 필수적인 트랜잭션을 지원하지 않습니다.
  3. 삽입 또는 업데이트를 위해 전체 테이블이 잠겨 있기 때문에 자주 삽입 또는 업데이트되는 테이블의 경우 InnoDB보다 느립니다.

비교는 꽤 간단합니다.InnoDB는 빈번한 삽입 및 업데이트가 필요한 데이터 중요 상황에 더 적합합니다.반면, My ISAM은 데이터 무결성에 크게 의존하지 않고 대부분 데이터를 선택하여 표시하는 애플리케이션에서 더 나은 성능을 발휘합니다.

참조: 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에서 문제가 발생할 수 있습니다.

InnoDB 구성에서(MySQL 버전 5.5)

주의

데이터에 대한 안정성을 고려할 경우 NFS 볼륨에서 데이터 파일 또는 로그 파일을 사용하도록 InnoDB를 구성하지 마십시오.잠재적인 문제는 NFS의 OS 및 버전에 따라 다르며, 충돌하는 쓰기로부터 보호받지 못하는 문제, 최대 파일 크기 제한 등이 있습니다.

InnoDB 기능 1.완전한 ACID(원자성, 일관성, 격리 및 내구성) 준수를 통해 완전한 트랜잭션 기능을 제공합니다.

  1. 행 레벨 잠금 기능이 있습니다.행 수준 잠금을 지원함으로써 엔진이 삽입할 때마다 테이블을 잠그지 않고도 InnoDB 테이블에 데이터를 추가할 수 있으며 이를 통해 데이터베이스의 정보 복구와 저장 속도가 모두 빨라집니다.

  2. InnoDB 시스템의 핵심은 인덱스와 데이터가 모두 메모리에 캐싱되고 디스크에 저장되는 데이터베이스, 캐싱 및 인덱싱 구조입니다. 이를 통해 매우 빠른 복구가 가능하며, 매우 큰 데이터 세트에서도 작동합니다.

  3. InnoDB는 외부 키 제약 조건을 지원합니다.

  4. InnoDB는 자동 충돌 복구를 지원합니다.
  5. InnoDB는 테이블 압축(읽기/쓰기)을 지원합니다.
  6. InnoDB는 공간 데이터 유형 지원(공간 인덱스 없음)

  7. Innodb는 Non-locking ANALIZE TABLE을 지원하며, 서버가 인덱스 통계를 분석하고 테이블이 열릴 때 인덱스 정보를 가져오기 때문에 서버가 오랫동안 실행된 경우에만 필요합니다.

  8. Innodb에는 별도의 인덱스 파일이 없으므로 열 필요가 없습니다.

  9. Innodb는 인덱스를 기본 키 순서(ALTER 후)로 한 번에 한 행씩 구축합니다. 즉, 인덱스 트리가 최적의 순서로 구축되지 않고 단편화되어 있습니다.InnoDB가 MySQL 5.0에서 정렬하여 인덱스를 빌드할 수 없으므로 InnoDB 인덱스를 조각 모음할 수 있는 방법은 현재 없습니다.InnoDB 인덱스를 삭제하고 다시 생성해도 데이터에 따라 인덱스가 조각화될 수 있습니다.

  10. 테이블에는 최대 1000개의 열을 포함할 수 있습니다.

  11. InnoDB 내부 최대 키 길이는 3500바이트이지만 MySQL 자체는 이를 3072바이트로 제한합니다.(MySQL 5.0.17 이전의 64비트가 아닌 빌드와 5.0.15 이전의 모든 빌드의 경우 1024바이트입니다.

  12. InnoDB의 기본 데이터베이스 페이지 크기는 16KB입니다.코드를 다시 컴파일하면 8KB에서 64KB 사이의 값으로 설정할 수 있습니다.UNIV_PAGE_SIZE 및 UNIV_PAGE_SIZE_SIZE_SHIFT 값을 univ.i 소스 파일에서 업데이트해야 합니다.
  13. InnoDB 테이블은 FULLTEXT 인덱스를 지원하지 않습니다.

    MYISAM 특징

    1. 트랜잭션 지원 없음
    2. 테이블 레벨 잠금
    3. 전체 텍스트 검색을 제공합니다.
    4. 테이블의 데이터에 제한이 없습니다.
    5. fast COUNT(*)s(WHERE, GROUP BY, JOIN이 사용되지 않는 경우)
    6. 전문 색인 작성
    7. 디스크 설치 공간 감소
    8. 매우 높은 테이블 압축(읽기 전용)
    9. 공간 데이터 유형 및 인덱스(R-tree)
  14. 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의 차이점에 대한 설명은 다음과 같습니다.

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

반응형