MyISAM
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
MyISAM은 MySQL 데이터베이스 시스템에서 사용되는 스토리지 엔진이다. 각 MyISAM 테이블은 세 개의 파일(.frm, .MYD, .MYI)로 저장되며, 테이블 정의, 데이터, 인덱스 정보를 각각 담고 있다. 파일 형식은 `ROW_FORMAT` 옵션에 따라 FIXED, DYNAMIC, COMPRESSED 세 가지로 나뉜다. MyISAM은 트랜잭션을 지원하지 않으며, 읽기 작업이 많고 쓰기 작업이 적은 환경, 예를 들어 데이터 웨어하우스에 최적화되어 있다. 인덱스 구조로 인해 빠른 읽기가 가능하지만, 데이터베이스 트랜잭션과 외래 키를 지원하지 않는다는 단점이 있다. MySQL 5.5 이후 버전에서는 InnoDB 엔진으로의 전환이 이루어졌다. MariaDB는 MyISAM을 대체하는 Aria 엔진을 제공하며, MyISAM 코드에 대한 개선을 지속하고 있다.
더 읽어볼만한 페이지
- 데이터베이스 엔진 - 파일메이커
파일메이커는 데이터베이스 관리 및 공유를 위한 소프트웨어로, FileMaker Pro를 통해 커스텀 앱을 제작하고 FileMaker Server로 LAN 환경에서 데이터베이스를 공유 및 백업하며, FileMaker Go 앱과 FileMaker WebDirect를 통해 모바일 및 웹 브라우저에서 데이터베이스 솔루션을 활용하고 Claris Connect로 엔터프라이즈 앱과의 데이터 통합을 지원한다. - 데이터베이스 엔진 - DBM (컴퓨팅)
DBM은 1979년 켄 톰프슨이 개발한 데이터베이스 엔진으로, 기본 키를 사용하여 데이터를 저장하고 해시 함수를 통해 빠른 검색을 지원하며, 다양한 후속 구현체가 존재한다. - MySQL - MariaDB
MariaDB는 MySQL 창립자가 MySQL의 오리지널 코드를 기반으로 개발한 오픈 소스 관계형 데이터베이스 관리 시스템으로, MySQL과의 호환성을 유지하면서 성능 향상과 독자적인 기능을 제공하며 다양한 기관 및 기업에서 사용된다. - MySQL - InnoDB
InnoDB는 오라클에서 개발한 트랜잭션 중심의 스토리지 엔진으로, SQL, XA 트랜잭션, 테이블스페이스, 외래 키를 지원하며 MySQL과 MariaDB에서 전체 텍스트 검색, 공간 연산, 가상 열 기능 등을 제공한다.
MyISAM - [IT 관련 정보]에 관한 문서 | |
---|---|
MyISAM 정보 | |
개발사 | 오라클 |
프로그래밍 언어 | C |
운영 체제 | 크로스 플랫폼 |
종류 | 데이터베이스 엔진 |
라이선스 | GNU General Public License |
웹사이트 | 공식 웹사이트 |
2. 파일 시스템
각 MyISAM 테이블은 파티셔닝되지 않은 경우 디스크에 세 개의 파일로 저장된다. 파일 이름은 테이블 이름으로 시작하며 파일 형식을 나타내는 확장자를 갖는다. MySQL은 테이블 정의를 저장하기 위해 .frm 파일을 사용하지만, 이 파일은 MyISAM 엔진의 일부가 아니며 서버의 일부이다. 데이터 파일은 .MYD (MYData) 확장자를 가지며, 인덱스 파일은 .MYI (MYIndex) 확장자를 갖는다. 인덱스 파일이 손실된 경우 인덱스를 다시 생성하여 항상 다시 만들 수 있다.[1]
파일 형식은 `ROW_FORMAT` 테이블 옵션에 따라 달라진다. 다음 형식을 사용할 수 있다.[1]
- FIXED: 모든 데이터(가변 길이 유형 포함)가 고정 길이를 갖는 형식이다. 이 형식은 읽기 속도가 빠르며 손상된 테이블 복구를 개선한다. 테이블에 큰 가변 길이 열(BLOB 또는 TEXT)이 포함된 경우 FIXED 형식을 사용할 수 없다.[1]
- DYNAMIC: 가변 길이 열은 고정 길이 크기를 갖지 않는다. 이 형식은 읽기 속도가 약간 느리지만, 디스크 공간을 절약한다.[1]
- COMPRESSED: 압축된 테이블은 MySQL이 실행되지 않는 동안 전용 도구로 생성할 수 있으며 읽기 전용이다. 일반적으로 실행 가능한 옵션이 아니지만, 압축률은 다른 방법에 비해 상당히 높다.[1]
MyISAM 파일은 시스템에 의존하지 않으며 MyISAM은 트랜잭션을 지원하지 않으므로, 내용이 현재 서버 작업 부하에 의존하지 않는다. 따라서 서로 다른 서버 간에 복사할 수 있다.[1]
3. 특징
MyISAM은 읽기 작업이 많고 쓰기 작업이 거의 없는 환경에 최적화되어 있다. MyISAM을 사용하는 대표적인 예는 데이터 웨어하우스인데, 매우 큰 테이블에 대한 쿼리가 많고, 테이블 업데이트는 데이터베이스를 사용하지 않는 밤에 수행되는 경우이다.
MyISAM이 빠른 읽기를 지원하는 이유는 인덱스 구조 때문이다. 각 항목은 데이터 파일의 레코드를 가리키며, 포인터는 파일 시작 부분에서의 오프셋이다. 이러한 방식으로 레코드를 빠르게 읽을 수 있으며, 특히 형식이 고정된 경우에는 더욱 그렇다. 따라서 행의 길이는 일정하다. 삽입도 쉬운데, 새 행이 데이터 파일의 끝에 추가되기 때문이다. 그러나 삭제 및 업데이트는 더 어렵다. 삭제는 빈 공간을 남겨야 하거나 행의 오프셋이 변경된다. 업데이트도 마찬가지로, 행의 길이가 짧아지기 때문이다. 업데이트로 행이 길어지면 행이 조각화된다. 행을 조각 모음하고 빈 공간을 확보하려면 OPTIMIZE TABLE 명령을 실행해야 한다. 이러한 간단한 구조 덕분에 MyISAM 인덱스 통계는 일반적으로 매우 정확하다.
하지만 MyISAM은 단순하기 때문에 몇 가지 단점이 있다. 가장 큰 단점은 데이터베이스 트랜잭션을 지원하지 않는다는 것이다. 또한 외래 키도 지원되지 않는다. 일반적인 사용 사례에서는 InnoDB가 MyISAM보다 더 빠른 것으로 보인다.[2]
MySQL 5.5 이상 버전은 참조 무결성 제약 조건 및 더 높은 동시성 (컴퓨터 과학)을 보장하기 위해 InnoDB 엔진으로 전환되었다.
MyISAM은 FULLTEXT 인덱싱 및 OpenGIS 데이터 형식을 지원한다.
4. 포크 및 확장
MariaDB는 Aria라는 스토리지 엔진을 가지고 있으며, 이는 "MyISAM을 대체하는 충돌 방지형"으로 묘사된다.[3] MariaDB 개발자들은 MyISAM 코드 작업을 계속하고 있으며, 주요 개선 사항으로 "세분화된 키 캐시"를 제공한다.[4] 이 기능은 MyISAM 인덱스 캐시를 세분화하여 동시성을 향상시킨다.
MariaDB의 MyISAM은 가상 열을 지원한다. Drizzle은 MyISAM을 포함하지 않는다.
4. 1. MariaDB
MariaDB는 Aria라는 스토리지 엔진을 가지고 있으며, 이는 "MyISAM을 대체하는 충돌 방지형"으로 묘사된다.[3] 그러나 MariaDB 개발자들은 여전히 MyISAM 코드 작업을 하고 있으며, 주요 개선 사항으로 "세분화된 키 캐시"를 제공한다.[4] 이 기능을 활성화하면 MyISAM 인덱스 캐시가 세분화되어, 스레드가 전체 캐시를 잠가야 하는 경우가 줄어들어 동시성을 향상시킨다.MariaDB에서 MyISAM은 가상 열도 지원한다.
4. 2. Drizzle
Drizzle은 MyISAM을 포함하지 않는다.참조
[1]
웹사이트
MySQL 5.5 Reference Manual :: 13 Storage Engines :: 13.6 The InnoDB Storage Engine
http://dev.mysql.com[...]
2009-05-10
[2]
웹사이트
MySQL Performance: InnoDB vs MyISAM in 5.6
http://dimitrik.free[...]
2012-11-16
[3]
웹사이트
Aria FAQ
https://mariadb.com/[...]
MariaDB
2010-08-15
[4]
웹사이트
Segmented Key Cache
https://kb.askmonty.[...]
MariaDB
2010-08-17
[5]
웹사이트
MySQL 5.5 Reference Manual :: 13 Storage Engines :: 13.6 The InnoDB Storage Engine
http://dev.mysql.com[...]
2009-05-10
[6]
웹사이트
MySQL Performance: InnoDB vs MyISAM in 5.6
http://dimitrik.free[...]
2012-11-16
[7]
웹사이트
Aria FAQ
https://mariadb.com/[...]
MariaDB
2010-08-15
[8]
웹사이트
Segmented Key Cache
https://kb.askmonty.[...]
MariaDB
2010-08-17
[9]
웹인용
MySQL 5.5 Reference Manual :: 13 Storage Engines :: 13.6 The InnoDB Storage Engine
http://dev.mysql.com[...]
2009-05-10
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com