Article Directory
5.1 MyISAMMyISAM은 MySQL5.5 이전의 기본 스토리지 엔진이었습니다. 이러한 이유로 아직 MyISAM 스토리지 엔진을 사용하는 서버가 많이 있습니다. 동시에 MyISAM은 현재 많은 시스템 테이블과 임시 테이블에서 사용되는 스토리지 엔진입니다. 여기서 언급하는 임시 테이블은 우리가
create table
을 통해 생성하는 테이블을 의미합니다. 정렬, 그룹화 및 기타 작업 중에 숫자가 특정 크기를 초과하면 쿼리 최적화 프로그램에 의해 임시 테이블이 생성됩니다. MyISAM 스토리지 엔진은 MYD와 MYI로 구성됩니다. MYD는 데이터 파일의 확장자이고 MYI는 이 두 가지 확장자를 가진 데이터 파일과 인덱스 파일에 테이블을 저장합니다. 기능:
동시성 및 잠금 수준
MyISAM은 행 수준 잠금이 아닌 테이블 수준 잠금을 사용합니다. 즉, 테이블의 데이터를 수정할 때 전체 테이블을 잠가야 하며, 공유 잠금도 테이블을 읽을 때 모든 테이블에 추가됩니다. 여기에서 MyISAM을 엔진으로 사용하는 테이블 읽기 및 쓰기 작업이 상호 배타적이라는 것을 알 수 있습니다. MyISAM은 동시 읽기 및 쓰기 작업에 그다지 좋지 않다는 것을 알 수 있습니다. 읽기 전용 작업에만 해당하는 경우 공유 잠금이 공유 잠금을 차단하지 않으므로 동시성 측면에서 성능이 나쁘지 않습니다.
테이블 손상 복구 MyISAM은 예상치 못한 종료로 인해 손상된 MyISAM 테이블을 확인하고 복구할 수 있도록 지원하지만 여기서 언급한 복구는 데이터 복구가 아닙니다. MyISAM은 트랜잭션 스토리지 엔진이 아니기 때문에 트랜잭션 복구에 필요한 관련 로그가 필요하기 때문입니다. , MyISAM 테이블을 복구하면 데이터가 손실될 수 있다는 점에 유의하세요. check table tablename
을 통해 테이블을 확인하고, repair table tablename
을 통해 테이블을 복원할 수 있습니다.
MyISAM 테이블에서 지원되는 인덱스 유형create table
创建出来的表,是指在排序、分组等操作中,当数量超过一定的大小之后,有查询优化器建立的临时表。
MyISAM存储引擎是由MYD和MYI组成,MYD是数据文件的扩展名,MYI是索引文件的扩展名,这个存储引擎是将表存储在以这两个为扩展名的数据文件和索引文件中。
特性:
check table tablename
对表进行检查,通过repair table tablename
对表进行恢复。myisampack
MyISAM은 전체 텍스트 인덱싱을 지원하며 mysql5.7 이전에 전체 텍스트 인덱싱을 기본적으로 지원하는 유일한 공식 스토리지 엔진이었습니다. MyISAM이 대규모 읽기 전용 테이블을 나타내는 경우, 즉 테이블이 생성되고 데이터를 가져온 후 테이블이 수정되지 않으면 테이블을 압축하여 데이터를 줄일 수 있습니다. 디스크 I/O. myisampack
명령을 사용하여 테이블을 압축할 수 있습니다. 압축은 테이블을 독립적으로 압축하므로 데이터 행을 읽을 때 전체 테이블의 압축을 풀 필요가 없습니다.
Version을 수정해야 합니다. 256TB
공간 애플리케이션
🎜5.2 Innodb🎜🎜Innodb는 MySQL 5.5 이상 버전의 기본 스토리지 엔진입니다. Innodb는 트랜잭션 스토리지를 위한 스토리지 엔진으로, 트랜잭션 처리를 지원합니다.
Innodb는 테이블스페이스에 대한 고유한 개념을 가지고 있으며, 데이터는 innodb_file_per_table
매개변수에 의해 결정되는 테이블스페이스에 저장됩니다. 이 매개변수가 ON
이면 시스템입니다. 각 Innodb 테이블에 대해 확장자가 ibd
인 파일이 생성됩니다. 이 매개변수가 OFF
인 경우 데이터는 시스템의 공유 테이블 공간, 즉 에 저장됩니다. >ibdataX
, X
는 기본적으로 1부터 시작하는 숫자를 나타냅니다. innodb_file_per_table
这个参数来决定的,如果这个参数为ON
,则会对每个Innodb表建立一个扩展名为ibd
的系统文件,如果这个参数为OFF
时,则会把数据存储到系统的共享表空间,也就是ibdataX
,X
代表的时一个数字,默认从1开始。
查看这个参数的命令为:show variables like 'innodb_file_per_table';
修改这个参数的命令为:set global innodb_file_per_table=off;
5.2.1 系统表空间和独立表空间要如何选择
比较:
系统表空间 | 独立表空间 |
---|---|
无法简单的收缩文件大小 | 可以通过optimize table 命令收缩系统文件 |
会产生IO瓶颈 | 可以同时向多个文件刷新数据 |
建议:
把原来存在于系统表空间中的表转移到独立表空间中的方法。
步骤:
5.2.2 Innodb存储引擎的特性
5.2.3 Innodb状态检查
可以使用以下命令对Innodb状态进行检查:show engine innodb status
이 매개변수를 보는 명령은 다음과 같습니다.
show Variables like 'innodb_file_per_table';
이 매개변수를 수정하는 명령은 다음과 같습니다. set global innodb_file_per_table=off;
5.2.1 시스템 테이블스페이스와 독립 테이블스페이스 선택 방법
비교:
단순히 파일 크기를 줄이는 것은 불가능하다
동시에 여러 파일로 데이터를 새로 고칠 수 있습니다.
Innodb에 독립 테이블스페이스 사용 | 원래 시스템 테이블스페이스에 존재했던 테이블을 독립 테이블스페이스로 옮기는 방식. | |
---|---|---|
mysqldump를 사용하여 모든 데이터베이스 테이블 데이터 내보내기 | MySQL 서비스 중지, 매개변수 수정 및 Innodb 관련 파일 삭제 | MySQL 서비스 다시 시작, Innodb 시스템 테이블 공간 재구축 |
5.2.2 Innodb 스토리지 엔진의 특징 | Innodb는 트랜잭션 스토리지 엔진입니다 |
show Engine innodb status
🎜🎜🎜5.2.4 적용 가능한 시나리오🎜🎜🎜Innodb가 적합합니다. 대규모 애플리케이션의 경우 대부분의 OLTP 애플리케이션은 mysql5.7 버전 이후 Innodb가 이미 전체 텍스트 인덱스 및 공간 기능을 지원하기 때문입니다. 🎜🎜🎜5.2.4 (확장) 자물쇠란 무엇인가요🎜🎜🎜🎜5.2.3.1 자물쇠란 무엇인가요? 🎜🎜🎜🎜잠금의 주요 기능은 공유 리소스에 대한 동시 액세스를 관리하는 것입니다.🎜🎜잠금은 트랜잭션 격리를 달성하는 데 사용됩니다.🎜🎜🎜🎜5.2.3.2 잠금 유형: 🎜🎜🎜🎜공유 잠금(읽기 잠금이라고도 함)🎜 🎜 배타적 잠금(쓰기 잠금이라고도 함)🎜🎜🎜🎜5.2.3.3 쓰기 잠금과 읽기 잠금 간의 호환성 관계(한 행에 대한 호환성)🎜🎜🎜🎜🎜🎜🎜🎜🎜쓰기 잠금🎜🎜읽기 잠금🎜🎜🎜🎜 🎜 🎜쓰기 잠금🎜🎜호환 안 됨🎜🎜호환 안 됨🎜🎜🎜🎜읽기 잠금🎜🎜호환 안 됨🎜🎜호환🎜🎜🎜🎜실제 상황에서는 결과가 위 표의 결과와 다를 수 있습니다. 주로 Innodb의 잠금 메커니즘이 매우 복잡하고 최종 결과에 영향을 미치는 잠금이 많기 때문입니다.
5.2.3.4 잠금 세분성:
5.2.3.5 차단 및 교착 상태
차단: 차단은 서로 다른 잠금 간의 호환성 관계로 인해 발생합니다. 어떤 시점에서는 한 트랜잭션의 잠금이 다른 트랜잭션의 잠금이 해제될 때까지 기다려야 하며, 이 잠금이 차지하는 리소스는 블록을 형성합니다.
교착 상태(Deadlock): 교착 상태란 트랜잭션 실행 중에 두 개 이상의 트랜잭션이 상대방이 기다리고 있는 리소스를 점유할 때 발생하는 예외를 말합니다. 정의에서 볼 수 있듯이, 차단된 트랜잭션이 여러 개일 때 차단된 트랜잭션이 기다리고 있는 자원을 점유하는 경우를 말하며, 차단된 트랜잭션이 여러 개일 때 서로가 기다리고 있는 리소스를 점유하는 경우를 교착상태(deadlock)라고 합니다.
5.3 CSV 저장 엔진
CSV 저장 엔진은 csv 파일을 mysql 테이블 파일로 처리할 수 있습니다. 이 저장 엔진의 저장 형식은 csv 저장 엔진의 데이터 저장 방법이 매우 독특합니다. MyISAM 또는 Innodb에 테이블을 저장하면 이 두 파일은 바이너리 형식으로 저장되지만 CSV 저장 엔진은 텍스트가 파일에 저장되기 때문에 데이터 파일을 직접 볼 수 없습니다. 즉, more와 같은 파일을 보는 명령을 통해 볼 수 있고, CSV 파일의 형식과 요구 사항을 충족하는 한 vi 명령을 사용하여 CSV 저장소 엔진의 테이블을 보고 편집할 수 있습니다. 데이터 손상에 대해 걱정할 필요가 없습니다.
mysql에서 CSV 스토리지 엔진 테이블을 생성하면 3가지 파일 시스템의 파일을 볼 수 있어야 합니다. 이 세 가지 파일 이름은 모두 테이블 이름을 기반으로 하지만 각각 접미사로 csv, csm 및 frm이 있습니다. csv 파일은 CSV 저장소 엔진의 데이터 파일입니다. csm 파일은 테이블의 메타데이터와 테이블 상태, 데이터 볼륨을 저장합니다. FRM 파일은 테이블 구조 정보를 저장합니다.
5.3.1 CSV 저장 엔진의 특징
,
로 구분되며, 텍스트의 내용이 동봉되어 있습니다. 아래와 같이 큰따옴표로 묶습니다. ,
来分隔的,并且文本的内容是以双引号来引起来的,如下图所示:5.3.2 CSV存储引擎的适用场景
CSV存储引擎适合作为数据交换的中间表
5.4 Archive存储引擎
5.4.1 文件系统存储特点
Archive存储引擎会缓存所有的写,并且利用zlib对插入的行进行压缩,因此Archive存储引擎相对于MyISAM存储引擎的表更加节省磁盘I/O,对于同样数量级的数据,Archive存储引擎相对于MyISAM和Innodb更加节省存储空间。一个几T的Innodb的表存储在Archive存储引擎当中,可能只需要几百兆的存储空间。
Archive存储引擎的表的数据是以ARZ为后缀的一个文件,和其他引擎一样,也存在一个以frm为后缀的系统文件,用于存储表的结构信息。
5.4.2 Archive存储引擎的特点
insert
和select
인덱스를 지원하지 않습니다. 대규모 테이블에는 적합하지 않습니다.
데이터 파일을 직접 편집할 수 있습니다 텍스트 파일 내용 저장
5.3.2 CSV 스토리지 엔진의 적용 시나리오
CSV 스토리지 엔진은 데이터 교환을 위한 중간 테이블로 적합합니다mysql 튜토리얼(동영상)
위 내용은 빅데이터 학습 2부 MYSQL 고급의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!