>  기사  >  데이터 베이스  >  빅데이터 학습 2부 MYSQL 고급

빅데이터 학습 2부 MYSQL 고급

coldplay.xixi
coldplay.xixi앞으로
2021-02-01 09:33:501576검색

빅데이터 학습 2부 MYSQL 고급

Article Directory

  • 5 MySQL Architecture
    • 5.1 MyISAM
    • 5.2 Innodb
      • 5.2.1 시스템 테이블 공간과 독립 테이블 공간을 선택하는 방법
      • 5.2 . 2 Innodb 스토리지 엔진 특징
      • 5.2.3 Innodb 상태 확인
      • 5.2.4 적용 가능한 시나리오
      • 5.2.4 (확장) 잠금이란 무엇입니까
        • 5.2.3.1 잠금이란 무엇입니까?
        • 5.2.3.2 잠금 유형:
        • 5.2.3.3 쓰기 잠금과 읽기 잠금 간의 호환성 관계(한 행에 대한 호환성)
        • 5.2.3.4 잠금 세분성:
        • 5.2.3.5 차단 및 교착 상태
    • 5. 3 CSV 스토리지 엔진
      • 5.3.1 CSV 스토리지 엔진의 특징
      • 5.3.2 CSV 스토리지 엔진의 적용 가능한 시나리오
    • 5.4 아카이브 스토리지 엔진
      • 5.4.1 파일 시스템 스토리지 특성
      • 5.4.2 아카이브 스토리지 엔진 기능
      • 5.4.3 아카이브 스토리지 엔진 사용 시나리오
    • 5.5 메모리 스토리지 엔진
      • 5.5.1 파일 시스템 스토리지 기능
      • 5.5.2 메모리 기능 기능
      • 5.5.3 쉽게 혼동되는 개념 메모리 5.5.4 메모리의 사용 시나리오 5.6 연합 스토리지 엔진
      5.6.1 Federated의 특징 5.6.2 Federated
    • 5.6.3 연합 해당 시나리오 사용 방법
    • 6 올바른 스토리지 엔진을 선택하는 방법
      • 이전 기사에서 이어짐
      • 5 MySQL 아키텍처
  • 간단한 작업을 위해 더 일반적으로 사용되는 스토리지 엔진 중 일부를 선택해 보겠습니다. mysql은 데이터베이스의 성능에 직접적인 영향을 미치게 되므로 스토리지 엔진을 사용하기 전에 스토리지 엔진의 몇 가지 특성을 주의 깊게 이해하시기 바랍니다.
5.1 MyISAM

MyISAM은 MySQL5.5 이전의 기본 스토리지 엔진이었습니다. 이러한 이유로 아직 MyISAM 스토리지 엔진을 사용하는 서버가 많이 있습니다. 동시에 MyISAM은 현재 많은 시스템 테이블과 임시 테이블에서 사용되는 스토리지 엔진입니다. 여기서 언급하는 임시 테이블은 우리가 create table을 통해 생성하는 테이블을 의미합니다. 정렬, 그룹화 및 기타 작업 중에 숫자가 특정 크기를 초과하면 쿼리 최적화 프로그램에 의해 임시 테이블이 생성됩니다.

MyISAM 스토리지 엔진은 MYD와 MYI로 구성됩니다. MYD는 데이터 파일의 확장자이고 MYI는 이 두 가지 확장자를 가진 데이터 파일과 인덱스 파일에 테이블을 저장합니다. 기능:

빅데이터 학습 2부 MYSQL 고급동시성 및 잠금 수준
MyISAM은 행 수준 잠금이 아닌 테이블 수준 잠금을 사용합니다. 즉, 테이블의 데이터를 수정할 때 전체 테이블을 잠가야 하며, 공유 잠금도 테이블을 읽을 때 모든 테이블에 추가됩니다. 여기에서 MyISAM을 엔진으로 사용하는 테이블 읽기 및 쓰기 작업이 상호 배타적이라는 것을 알 수 있습니다. MyISAM은 동시 읽기 및 쓰기 작업에 그다지 좋지 않다는 것을 알 수 있습니다. 읽기 전용 작업에만 해당하는 경우 공유 잠금이 공유 잠금을 차단하지 않으므로 동시성 측면에서 성능이 나쁘지 않습니다.

테이블 손상 복구 MyISAM은 예상치 못한 종료로 인해 손상된 MyISAM 테이블을 확인하고 복구할 수 있도록 지원하지만 여기서 언급한 복구는 데이터 복구가 아닙니다. MyISAM은 트랜잭션 스토리지 엔진이 아니기 때문에 트랜잭션 복구에 필요한 관련 로그가 필요하기 때문입니다. , MyISAM 테이블을 복구하면 데이터가 손실될 수 있다는 점에 유의하세요. check table tablename을 통해 테이블을 확인하고, repair table tablename을 통해 테이블을 복원할 수 있습니다.

MyISAM 테이블에서 지원되는 인덱스 유형create table创建出来的表,是指在排序、分组等操作中,当数量超过一定的大小之后,有查询优化器建立的临时表。
MyISAM存储引擎是由MYD和MYI组成,MYD是数据文件的扩展名,MYI是索引文件的扩展名,这个存储引擎是将表存储在以这两个为扩展名的数据文件和索引文件中。

特性:

  • 并发性与锁级别
    MyISAM使用的是表级锁,并不是行级锁,这也就意味着对表中的数据进行修改时,需要对整个表进行加锁,而在对表的读取时也对所有的表加共享锁,从这里我们可以看到,使用MyISAM做引擎的表读取和写入两种操作是互斥的。由此可以看到MyISAM对于读写的并发操作并不会很好。如果只对于只读取操作的话,就并发性而言,性能也还不错,因为共享锁不会阻塞共享锁。
  • 表损坏修复
    MyISAM支持由于任意意外关闭而损坏的MyISAM表,进行检查和修复操作,但是这里说的修复并不是数据的恢复,因为MyISAM并不是一种事务性的存储引擎,所以它不能进行事务恢复所需要的相关日志,所以要注意MyISAM表的恢复可能会造成数据的丢失。
    我们可以通过check table tablename对表进行检查,通过repair table tablename对表进行恢复。
  • MyISAM表支持的索引类型
    MyISAM支持全文索引,并且在mysql5.7版本之前唯一原生就支持全文索引的官方存储引擎。
  • MyISAM表支持数据压缩
    如果MyISAM表示一张很大的只读表,也就是在表创建完导入数据后,就不会对表进行任何修改操作了,那我们就可以对表进行压缩了,以减少磁盘I/O。 我们可以使用myisampack MyISAM은 전체 텍스트 인덱싱을 지원하며 mysql5.7 이전에 전체 텍스트 인덱싱을 기본적으로 지원하는 유일한 공식 스토리지 엔진이었습니다.
MyISAM 테이블은 데이터 압축을 지원합니다.

MyISAM이 대규모 읽기 전용 테이블을 나타내는 경우, 즉 테이블이 생성되고 데이터를 가져온 후 테이블이 수정되지 않으면 테이블을 압축하여 데이터를 줄일 수 있습니다. 디스크 I/O. myisampack 명령을 사용하여 테이블을 압축할 수 있습니다. 압축은 테이블을 독립적으로 압축하므로 데이터 행을 읽을 때 전체 테이블의 압축을 풀 필요가 없습니다.

  • 제한 사항:
  • Version 큰 테이블을 저장하는 경우 MAX_Rows 및 AVG_ROW_LENGTH

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时,则会把数据存储到系统的共享表空间,也就是ibdataXX代表的时一个数字,默认从1开始。
查看这个参数的命令为:
show variables like 'innodb_file_per_table';
修改这个参数的命令为:
set global innodb_file_per_table=off;

5.2.1 系统表空间和独立表空间要如何选择

比较:

系统表空间 独立表空间
无法简单的收缩文件大小 可以通过optimize table命令收缩系统文件
会产生IO瓶颈 可以同时向多个文件刷新数据

建议:

  • 对Innodb使用独立表空间

把原来存在于系统表空间中的表转移到独立表空间中的方法。
步骤:

  1. 使用mysqldump导出所有数据库表数据
  2. 停止MySQL服务,修改参数,并删除Innodb相关文件
  3. 重启MySQL服务,重建Innodb系统表空间
  4. 重新导入数据

5.2.2 Innodb存储引擎的特性

  • Innodb是一种事务性存储引擎
  • 完全支持事务的ACID特性(之前介绍过的原子性,一致性等)
  • Redo Log 和 Undo Log
    Redo Log实现了事务的持久性,有两部分组成,其中一个是内存中的工作日志持久缓冲区,是由innodb_log_buffer_size决定它的大小,另一个是重构日志文件,也就是我们在文件系统中看到的ib_logflie的相关文件。Undo Log实现了事务的原子性,在事务失败时进行回滚操作。Redo Log是顺序读写的,Undo Log是随机读写的,如果可以的话可以将数据存储在固态硬盘中,以提高性能。
  • 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 시스템 테이블스페이스와 독립 테이블스페이스 선택 방법

비교:

    시스템 테이블스페이스
  • 독립 테이블스페이스

단순히 파일 크기를 줄이는 것은 불가능하다

    테이블 최적화 명령을 전달하면 시스템 파일이 축소됩니다.
  • IO 병목 현상이 발생합니다.

동시에 여러 파일로 데이터를 새로 고칠 수 있습니다.

권장 사항: 원래 시스템 테이블스페이스에 존재했던 테이블을 독립 테이블스페이스로 옮기는 방식. 단계:
다시 가져오기 data ol>5.2.2 Innodb 스토리지 엔진의 특징Innodb는 트랜잭션 스토리지 엔진입니다트랜잭션의 ACID 특성(이전에 소개한 원자성, 일관성 등)을 완벽하게 지원합니다

Innodb에 독립 테이블스페이스 사용
mysqldump를 사용하여 모든 데이터베이스 테이블 데이터 내보내기 MySQL 서비스 중지, 매개변수 수정 및 Innodb 관련 파일 삭제 MySQL 서비스 다시 시작, Innodb 시스템 테이블 공간 재구축
🎜Redo 로그 및 Undo Log🎜 Redo Log는 트랜잭션 지속성을 구현하며 두 부분으로 구성됩니다. 하나는 innodb_log_buffer_size에 의해 크기가 결정되는 메모리의 작업 로그 영구 버퍼이고, 다른 하나는 파일 시스템에서 수행하는 재구성된 로그 파일입니다. ib_logflie의 파일은 . Undo Log는 트랜잭션의 원자성을 인식하고 트랜잭션이 실패할 경우 롤백 작업을 수행합니다. Redo Log는 순차적으로 읽고 기록되며, Undo Log는 무작위로 읽고 기록됩니다. 가능하면 SSD에 데이터를 저장하여 성능을 향상시킬 수 있습니다. 🎜🎜Innodb는 행 수준 잠금을 지원합니다.🎜 행 수준 잠금과 테이블 수준 잠금은 스토리지 엔진 계층에서 최대한 동시성을 지원할 수 있다는 것이 특징입니다. . 🎜🎜🎜🎜5.2.3 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 저장 엔진의 특징

  • 가장 큰 특징은 CSV 형식으로 데이터를 저장한다는 점
    CSV의 각 열은 , 로 구분되며, 텍스트의 내용이 동봉되어 있습니다. 아래와 같이 큰따옴표로 묶습니다. ,来分隔的,并且文本的内容是以双引号来引起来的,如下图所示:
    빅데이터 학습 2부 MYSQL 고급
  • 所有列必须都是不能为NULL的
    在建表的时候所有的列都必须是非空的,不能存储为NULL的值
  • 不支持索引
    不适合大表,不适合在线处理
  • 可以对数据文件直接编辑
    保存文本文件内容

5.3.2 CSV存储引擎的适用场景

CSV存储引擎适合作为数据交换的中间表
빅데이터 학습 2부 MYSQL 고급
빅데이터 학습 2부 MYSQL 고급

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存储引擎的特点

  • 只支持insertselect
  • 모든 열은 NULL이 아니어야 합니다.
  • 테이블을 생성할 때 모든 열은 Null이 아니어야 하며 NULL 값으로 저장할 수 없습니다.

인덱스를 지원하지 않습니다. 대규모 테이블에는 적합하지 않습니다.

데이터 파일을 직접 편집할 수 있습니다

텍스트 파일 내용 저장

5.3.2 CSV 스토리지 엔진의 적용 시나리오

CSV 스토리지 엔진은 데이터 교환을 위한 중간 테이블로 적합합니다여기에 이미지 설명 삽입이미지 삽입 여기에 삽입 그리고 zlib를 사용하여 삽입된 행을 압축합니다. 따라서 Archive 스토리지 엔진은 MyISAM 스토리지 엔진의 테이블과 비교하여 디스크 I/O를 절약합니다. 동일한 크기의 데이터에 대해 Archive 스토리지 엔진은 MyISAM 및 MyISAM 테이블은 저장 공간을 더 절약합니다. Archive 스토리지 엔진에 저장된 수 테라바이트 Innodb 테이블에는 수백 메가바이트의 저장 공간만 필요할 수 있습니다. </p> Archive 스토리지 엔진의 테이블 데이터는 접미사 ARZ를 갖는 파일입니다. 다른 엔진과 마찬가지로 테이블의 구조 정보를 저장하는 데 사용되는 접미사 frm을 갖는 시스템 파일도 있습니다. 🎜🎜🎜5.4.2 아카이브 스토리지 엔진의 기능🎜🎜🎜🎜<code>삽입</code> 및 <code>선택</code> 작업만 지원🎜🎜자동 증가 ID 열에 대한 인덱싱만 허용🎜🎜🎜 🎜 5.4.3 아카이브 스토리지 엔진 사용 시나리오🎜🎜🎜시나리오 1: 로그 및 데이터 수집 데이터🎜 아카이브는 수정 및 삭제를 지원하지 않기 때문에 우리 ORDB는 확실히 데이터를 수정하지만 일부 웨어하우스 유형 애플리케이션의 경우 또는 일부 특수 테이블은 여전히 ​​​​데이터를 수정합니다. 로깅 테이블이나 데이터 수집 테이블과 같이 유용하며 많은 양의 데이터를 수집해야 하기 때문에 Archive 스토리지 엔진이 더 적합합니다. Archive 스토리지 엔진은 모든 엔진 중에서 저장 공간이 가장 작기 때문에 데이터 수집이나 로깅 응용 프로그램에서도 Archive 스토리지 엔진은 이러한 데이터를 업데이트할 수 없으므로 로그를 기록할 때 또는 데이터 컬렉션에서 데이터를 수정하는 경우 주의해야 합니다. 응용 프로그램을 사용하는 경우 Archive 스토리지 엔진을 사용하지 못할 수 있습니다. 🎜🎜🎜5.5 메모리 저장 엔진🎜🎜🎜🎜5.5.1 파일 시스템 저장 기능🎜🎜<p>메모리 스토리지 엔진은 HEAP 스토리지 엔진이라고도 부르므로 데이터가 메모리에 저장됩니다. 이는 데이터 테이블이 일회용임을 의미합니다. MySQL 서비스가 다시 시작되면 모든 메모리 스토리지 엔진 데이터가 사라지지만 테이블 구조는 다음과 같습니다. 왜냐하면 메모리 스토리지 엔진에서 테이블을 생성할 때 테이블 구조를 저장하는 데 사용되는 frm 시스템 파일이 하나만 생성되기 때문입니다. 이것이 MySQL 서버를 다시 시작할 때 데이터가 손실되지만 테이블 구조는 손실되지 않는 이유입니다. <br/> 파일 저장 특성을 통해 MyISAM의 인덱스만 메모리에 저장되고 데이터는 연산에 의해 캐시되기 때문에 메모리 저장 엔진의 I/O 효율성이 MyISAM보다 훨씬 높음을 알 수 있습니다. 시스템에 비해 메모리 스토리지 엔진은 데이터와 인덱스가 메모리에 저장되는 반면, 메모리 스토리지 엔진의 특징을 살펴보겠습니다. </p><p><strong>5.5.2 메모리</strong></p><p>기능: </p><ul><li> <strong>HASH 인덱스</strong>(기본값) 및 <strong>BTree 인덱스</strong><br/>를 지원합니다. HASH 인덱스인 경우 동일한 쿼리를 수행할 때 매우 빠릅니다. 범위 쿼리를 수행하는 경우 HASH 인덱스를 사용할 수 없으므로 테이블 생성 시 주의가 필요합니다. 테이블에 동일한 쿼리가 많이 필요한 경우 HASH 인덱스를 사용하고 범위 쿼리에는 BTree 인덱스를 사용합니다. 다양한 인덱스 유형은 성능에 큰 영향을 미칠 수 있습니다. </li><li>모든 필드는 고정 길이입니다. varchar(10) = char(10)<br/> 이를 위해서는 테이블 구조를 정의할 때 최소 필드 길이 요구 사항을 충족해야 합니다. 그렇지 않으면 많은 메모리가 낭비됩니다. </li><li>BLOG 및 TEXT와 같은 대규모 필드를 지원하지 않습니다.</li><li>메모리 저장 엔진은 테이블 수준 잠금을 사용합니다.</li><li>최대 크기는 max_heap_table_size 매개변수에 의해 결정됩니다.<br/>이 매개변수의 기본값은 저장하려는 경우 16MB입니다. 메모리 스토리지 엔진 테이블에 많은 양의 데이터가 있으므로 이 매개변수를 수정해야 하며, 이 매개변수 수정은 기존 메모리 스토리지 엔진 테이블에 적용되지 않습니다. 기존 테이블을 다시 작성하십시오. </li></ul><p><strong>5.5.3 메모리에서 쉽게 혼동되는 개념</strong></p><p>메모리 스토리지 엔진 테이블: <br/> 모든 시스템에서 사용할 수 있으며 임시 테이블이 아닙니다. <br/> 임시 테이블: <br/> 임시 테이블에는 두 가지 유형이 있는데, 하나는 쿼리 최적화 프로그램에서 쿼리를 최적화할 때 사용하는 시스템 사용 임시 테이블로, 제한이 초과되면 시스템이 임시 테이블을 사용합니다(BLOB 사용). 또는 TEXT 대형 필드), MyISAM 임시 테이블을 사용하고 제한을 초과하지 않고 메모리 테이블을 사용하십시오. <br/> 다른 하나는 <code>create temporary table</code> 명령을 통해 생성된 임시 테이블입니다. 생성된 테이블은 모든 스토리지 엔진을 사용할 수 있습니다. <code>create temporary table</code>建立的临时表,建立的表可以使用任何存储引擎。<br/> 无论是哪种临时表,只对内部可见。</p><p><strong>5.5.4 Memory的使用场景</strong></p><ul><li>用于查找或者映射表,例如邮编和地区的对应表</li><li>用于保存数据分析中产生的中间表</li><li>用于缓存周期聚合数据的结果表</li></ul><p>Memory数据易丢失,所以要求数据可再生。</p><p><strong>5.6 Federated存储引擎</strong></p><p><strong>5.6.1 Federated的特点</strong></p><ul><li>提供了访问远程MySQL服务器上表的方法<br/> 由于Federated存储引擎只是在本地建立了到远程服务器的一个连接,所以可以说我们所要访问的表全部还是放在远程服务器上,在本地并不存储数据。每次访问Federated存储引擎表的时候,查询都会被发送到远程服务器上运行,并从远程的MySQL服务器上获取相关的数据。</li><li>本地不存储数据,数据全部放到远程服务器上</li><li>本地需要保存表结构和远程服务器的连接信息<br/> 因此也会在系统中存在一个frm文件,用于存于远程信息以及如何连接远程表的相关信息。</li></ul><p><strong>5.6.2 Federated如何使用</strong></p><p>Federated存储引擎可以实现SQL Server连接服务器的功能,但是由于本身的性能并不太好,通常可以通过复制等实现相同的目的,所以在当前的MySQL版本中,Federated存储引擎默认是禁止的。如果需要使用Federated存储引擎,则需要在<code>/usr/local/mysql/my.cnf</code>中加入<code>federated=1</code>,接着重启MySQL服务器,我们可以通过<code>show engine</code>来确认当前MySQL服务器是否支持Federated存储引擎。<br/> 而在<code>create table</code>语句中使用下面的连接字符串,<br/><code>mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name</code><br/> 远程服务器绑定连接:<br/><code>grant select,update,insert,delete on remote.remote_fet to fred_link@'127.0.0.1' identified by '123456'</code> 어떤 종류의 임시 테이블이라도 내부에서만 보입니다. <br/></p><p>5.5.4 메모리 사용 시나리오 <strong></strong></p><ul> 우편번호, 지역 대응표 등의 테이블을 조회하거나 매핑하는 데 사용됩니다. <li><br/> 데이터 분석 중에 생성된 중간 테이블을 저장하는 데 사용됩니다. </li></ul> 주기적 집계 결과를 캐시하는 데 사용됩니다. data Table<p><strong></strong>메모리 데이터는 쉽게 잃어버리기 때문에 재현이 가능해야 합니다. </p><p></p>5.6 Federated Storage Engine🎜🎜🎜🎜5.6.1 Federated의 기능🎜🎜🎜🎜 원격 MySQL 서버의 테이블에 액세스하는 방법을 제공합니다.🎜 Federated 스토리지 엔진은 원격 서버에 로컬로만 연결을 설정하기 때문에 우리가 액세스하려는 모든 테이블은 여전히 ​​원격 서버에 있으며 로컬에 데이터가 저장되어 있지 않다고 합니다. 페더레이티드 스토리지 엔진 테이블에 접근할 때마다 쿼리가 원격 서버로 전송되어 실행되고, 원격 MySQL 서버에서 관련 데이터를 가져옵니다. 🎜🎜데이터는 로컬에 저장되지 않으며 모든 데이터는 원격 서버에 저장됩니다.🎜🎜원격 서버의 테이블 구조와 연결 정보는 로컬에 저장되어야 합니다.🎜 따라서 시스템에 원격 저장을 위한 frm 파일도 있습니다. 정보 및 원격 테이블 관련 정보에 연결하는 방법. 🎜🎜🎜🎜5.6.2 Federated 사용 방법 🎜🎜🎜 Federated 스토리지 엔진은 서버에 연결되는 SQL Server의 기능을 구현할 수 있습니다. 그러나 자체 성능이 좋지 않기 때문에 일반적으로 동일한 목적을 다음을 통해 달성할 수 있습니다. 복제 등이 포함되어 있으므로 현재 MySQL에서는 이 버전에서는 통합 스토리지 엔진이 기본적으로 비활성화되어 있습니다. Federated 스토리지 엔진을 사용해야 하는 경우 <code>/usr/local/mysql/my.cnf</code>에 <code>federated=1</code>를 추가한 다음 MySQL 서버를 다시 시작해야 합니다. 현재 MySQL 서버가 페더레이션된 스토리지 엔진을 지원하는지 확인하기 위해 <code >show 엔진</code>을 전달할 수 있습니다. 🎜 그리고 <code>create table</code> 문에 다음 연결 문자열을 사용합니다. 🎜<code>mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name</code>🎜 Remote Server 바인딩 연결: 🎜<code>'123456'으로 식별되는 fred_link@'127.0.0.1'에 대해 remote.remote_fet에서 선택, 업데이트, 삽입, 삭제 권한을 부여합니다.</code>🎜 쿼리할 원격 서버의 관련 정보를 확인할 수 있습니다. 관련 데이터베이스 테이블에 대한 일부 정보. 🎜🎜🎜5.6.3 Federated의 적용 가능한 시나리오🎜🎜🎜🎜수시적 통계 분석 및 수동 쿼리🎜 Federated의 느린 성능으로 인해 수시적 통계 분석 및 수동 쿼리에만 적합합니다. 🎜🎜🎜🎜6 올바른 스토리지 엔진을 선택하는 방법🎜🎜🎜참조 조건: 🎜<ul><li>Transactions</li><li>Backup</li><li>Crash Recovery</li><li>스토리지 엔진의 고유한 기능<br/> 스토리지 엔진을 혼합하지 마세요. </li></ul><blockquote><p><strong>더 많은 관련 무료 학습 권장 사항: </strong><a href=mysql 튜토리얼(동영상)

위 내용은 빅데이터 학습 2부 MYSQL 고급의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제