테이블 엔진
MySql 데이터베이스란 무엇입니까
일반적으로 데이터베이스는 데이터의 모음입니다. 특히 컴퓨터의 데이터베이스는 파일의 모음일 수 있습니다. 메모리 또는 일부 메모리 내 데이터의 모음입니다.
우리가 일반적으로 MySql 데이터베이스, SQL Server 데이터베이스 등이라고 부르는 것은 실제로는 데이터를 저장하고 데이터베이스 등에서 데이터를 쿼리하고 업데이트하는 기능을 제공하는 데이터베이스 관리 시스템입니다. 데이터베이스가 데이터를 저장하는 방법과 데이터를 작동하는 방법에 대한 구현 메커니즘에 따라 이러한 데이터베이스에는 차이점과 유사점이 있습니다.
MySql 데이터베이스는 오픈 소스 관계형 데이터베이스입니다. 현재 제공할 수 있는 기능에는 SQL 언어 지원, 하위 쿼리, 저장 프로시저, 트리거, 뷰, 인덱스, 트랜잭션, 잠금, 외래 키 제약 조건 및 이미지 복제 등이 포함됩니다. 이러한 기능에 대해서는 나중에 자세히 설명하겠습니다.
Oracle 및 SQL Server와 같은 대규모 데이터베이스 시스템과 마찬가지로 MySql도 클라이언트/서버 시스템이자 단일 프로세스 다중 스레드 아키텍처를 갖춘 데이터베이스입니다.
MySql을 다른 데이터베이스 시스템과 구별하는 중요한 기능은 플러그인 스토리지 엔진에 대한 지원입니다.
그럼 스토리지 엔진이란 무엇일까요?
간단히 말해서 스토리지 엔진은 데이터를 저장하는 방법, 저장된 데이터를 인덱싱하는 방법, 데이터를 업데이트하고 쿼리하는 방법과 같은 기술을 구현하는 것입니다. 관계형 데이터베이스에서는 데이터가 테이블 형태로 저장되기 때문에 스토리지 엔진을 테이블형(즉, 이 테이블의 저장 유형과 동작 유형)이라고 부를 수도 있다.
Oracle, SQL Server 등 데이터베이스에는 스토리지 엔진이 하나만 있으며 모든 데이터 스토리지 관리 메커니즘은 동일합니다. MySql 데이터베이스는 다양한 스토리지 엔진을 제공합니다. 사용자는 다양한 필요에 따라 데이터 테이블에 대해 다양한 스토리지 엔진을 선택할 수 있으며, 사용자는 자신의 필요에 따라 자체 스토리지 엔진을 작성할 수도 있습니다. MySql에는 어떤 스토리지 엔진이 있나요?
1 MyISAM: 이 엔진은 mysql에서 제공하는 첫 번째 엔진입니다. 이러한 종류의 엔진은 정적 MyISAM, 동적 MyISAM 및 압축 MyISAM의 세 가지 유형으로 나눌 수 있습니다.
정적 MyISAM: 데이터 테이블의 각 데이터 열 길이가 미리 고정되어 있으면 서버가 자동으로 이 테이블 유형을 선택합니다. . 데이터 테이블의 각 레코드는 동일한 공간을 차지하므로 테이블 액세스 및 업데이트 효율성이 매우 높습니다. 데이터가 손상된 경우 복구가 더 쉽습니다.
동적 MyISAM: varchar, xxxtext 또는 xxxBLOB 필드가 데이터 테이블에 나타나면 서버가 자동으로 이 테이블 유형을 선택합니다. 정적 MyISAM에 비해 이러한 종류의 테이블의 저장 공간은 상대적으로 작지만 각 레코드의 길이가 다르기 때문에 데이터가 여러 번 수정된 후에는 데이터 테이블의 데이터가 메모리에 개별적으로 저장될 수 있습니다. 결과적으로 실행 효율성이 감소합니다. 동시에 메모리에 많은 조각화가 있을 수도 있습니다. 따라서 이러한 유형의 테이블은 최적화 테이블 명령이나 최적화 도구를 사용하여 조각 모음을 수행해야 하는 경우가 많습니다.
MyISAM 압축: 위에서 언급한 두 가지 유형의 테이블 모두 myisamchk 도구를 사용하여 압축할 수 있습니다. 이 유형의 테이블은 스토리지 공간을 더욱 줄이지만 압축 후에는 수정할 수 없습니다. 또한, 이런 종류의 테이블은 압축된 데이터이기 때문에 읽을 때 먼저 압축을 풀어야 합니다.
그러나 MyISAM 테이블의 종류에 관계없이 현재는 트랜잭션, 행 수준 잠금 및 외래 키 제약 조건을 지원하지 않습니다.
2 MyISAM 병합 엔진: 이 유형은 MyISAM 유형의 변형입니다. 테이블 병합은 여러 개의 동일한 MyISAM 테이블을 가상 테이블로 병합하는 것입니다. 로그 및 데이터 웨어하우스에서 일반적으로 사용됩니다.
3 InnoDB: InnoDB 테이블 유형은 MyISAM의 추가 업데이트 제품으로 간주할 수 있습니다. 트랜잭션, 행 수준 잠금 메커니즘 및 외래 키 제약 조건 기능을 제공합니다.
4 메모리(힙): 이 유형의 데이터 테이블은 메모리에만 존재합니다. 해시 인덱스를 사용하므로 데이터 액세스가 매우 빠릅니다. 이 유형은 메모리에 존재하므로 임시 테이블에서 자주 사용됩니다.
5 아카이브: 이 유형은 선택 및 삽입 문만 지원하고 인덱스를 지원하지 않습니다. 로깅 및 집계 분석에 자주 사용됩니다.
물론 MySql은 위보다 더 많은 테이블 유형을 지원합니다.
일반적으로 사용되는 몇 가지 엔진을 소개하고 덜 일반적으로 사용되는 몇 가지 엔진에 대해 알아봅니다. 앞으로는 실제 작업에서 개념을 모르는 일부 엔진을 보지 마십시오.
가장 일반적으로 사용되는 두 가지 스토리지 엔진:
· Myisam은 Mysql의 기본 스토리지 엔진입니다. create가 새 테이블을 생성하고 새 테이블의 스토리지 엔진을 지정하지 않으면 기본적으로 Myisam이 사용됩니다. 각 MyISAM은 디스크에 세 개의 파일로 저장됩니다. 파일명은 테이블명과 동일하며, 확장자는 .frm(테이블 정의 저장), .MYD(MYData, 데이터 저장), .MYI(MYIndex, 인덱스 저장)이다. 데이터 파일과 인덱스 파일을 서로 다른 디렉터리에 배치하여 IO를 균등하게 분배하고 더 빠른 속도를 얻을 수 있습니다. ~ InnoDB 스토리지 엔진은 커밋, 롤백 및 충돌 복구 기능을 통해 트랜잭션 보안을 제공합니다. 그러나 Myisam의 스토리지 엔진에 비해 InnoDB의 쓰기 처리 효율성은 덜 효율적이며 데이터와 인덱스를 유지하기 위해 더 많은 디스크 공간을 차지합니다.
적합한 스토리지 엔진 선택 방법
선택 기준: 애플리케이션의 특성에 따라 적합한 스토리지 엔진을 선택합니다. 복잡한 응용 시스템의 경우 여러 스토리지 엔진을 선택하여 조합할 수 있습니다. 실제 상황.
일반적으로 사용되는 스토리지 엔진에 적용 가능한 환경은 다음과 같습니다.
1. MyISAM: 기본 MySQL 플러그인 스토리지 엔진으로 웹, 데이터 웨어하우징 및 기타 애플리케이션 환경 엔진 중 하나
2. InnoDB: ACID 트랜잭션 지원을 비롯한 다양한 기능을 갖춘 트랜잭션 처리 애플리케이션에 사용됩니다.
3. 메모리: 모든 데이터를 RAM에 저장하여 참조 및 기타 유사한 데이터를 빠르게 찾아야 하는 환경에서 매우 빠른 액세스를 제공합니다.
4. 병합: MySQL DBA 또는 개발자가 일련의 동등한 MyISAM 테이블을 논리적으로 결합하고 이를 하나의 개체로 참조할 수 있습니다. 데이터 웨어하우징과 같은 VLDB 환경에 매우 적합합니다.
MyISAM
은 트랜잭션, 테이블 잠금(테이블 수준 잠금, 잠금을 사용하면 테이블 전체가 잠김)을 지원하지 않으며 전체 텍스트 인덱스를 지원하며 작업 속도가 빠릅니다. 책을 많이 읽는 기업에 자주 사용됩니다.
1. myisam 스토리지 엔진 테이블은 myd와 myi로 구성됩니다. .myd는 데이터 파일을 저장하는 데 사용되고 .myi는 인덱스 파일을 저장하는 데 사용됩니다.
2. myisam 스토리지 엔진 테이블의 경우 mysql 데이터베이스는 인덱스 파일만 캐시하며, 데이터 파일 캐시는 운영 체제 자체에서 완료됩니다.
InnoDB
1. 주로 온라인 트랜잭션 처리(OLTP) 애플리케이션을 위한 트랜잭션을 지원합니다.
2. 행 잠금 디자인은 외래 키를 지원합니다. 즉, 읽기 작업은 기본적으로 잠기지 않습니다.
InnoDB는 대용량 데이터 처리 시 최대 성능을 발휘하도록 설계되었습니다.
참고:
행 잠금: 다른 사람이 조작하지 못하도록 쓰기 및 업데이트 작업 중에 이 행을 잠급니다.
테이블 잠금: 쓰기 및 업데이트 작업 중에 다른 사람이 테이블을 조작하지 못하도록 테이블을 잠급니다.
트랜잭션: 데이터 작업 중 하나가 실패하면 동시에 여러 데이터를 작업합니다. 작업 이전으로 롤백할 수 있습니다. 은행, 전자상거래, 금융 및 기타 시스템에서 일반적으로 사용됩니다.