"MySQL의는 SQL 문을 어떻게 실행? "

하나 : 개요

  - 먼저 알아야 할 MySQL의 전체 인프라

  - 

 

2 : MySQL의의 계층

  - MySQL의은으로 분할 될 수 개의 부분 서버 계층 및 저장 층 엔진

 

  - 서버 층

    - 등 커넥터, 쿼리 캐시, 분석, 최적화, 액추에이터를 포함하여 서버 층 의 MySQL의 핵심 서비스의 대부분을 커버 .

    - 및 (등과 날짜, 시간 및 수학 암호화 기능 등)의 모든 기본 함수

    - 스토리지 엔진 기능 등등 프로 시저, 트리거, 뷰, 및,이 층에 구현 된 모든 걸쳐.

 

  - 스토리지 엔진 층

    - 스토리지 엔진 층은 데이터 저장 및 검색 할 책임이있다.

    - 그것은 이노,의 MyISAM, 메모리 및 기타 스토리지 엔진을 지원하는 모드 플러그인 아키텍처이다.

    - 지금 가장 일반적으로 사용되는 스토리지 엔진은에서 이노입니다 MySQL은 5.5.5 버전이되었다 기본 스토리지 엔진

 

세 : 실행 과정

  --1 : 커넥터

    -는 TCP 핸드 셰이크를 완료 한 후 셸에서 MySQL의 서비스 (MySQL의 -h $ IP -P $ 포트 -u의 $ 사용자 -p)를 연결하는 경우, 커넥터는 인증 시작

      - 사용자 이름이나 암호가 잘못되면, 당신은 오류에 "사용자에 대한 액세스가 거부"를 받게되며, 클라이언트 프로그램은 실행을 종료합니다.

      - 사용자 이름 및 암호 인증, 권한은 당신이 가진 권한있는 발견 할 것이다 테이블에 연결합니다.

      - 그 후, 상기 접속 허가에 달려 접속 허가 판단 로직 읽을 .

      - PS

        -에 따라 인증이 여기에, 알 수 인증 기관을, 그것은 연결의 MySQL의 시간에 완료됩니다.

        - 따라서, 관리자가 연결된 상태에서 권한을 수정하는 경우에도, 그것은 기존의 연결에 영향을 미치지 않습니다. 링크 한 후 새로운 상태 권한을 사용합니다.

    

    - 각 연결의 연결 상태

      - 쇼 PROCESSLIST; 

    

    -  어떤 운동이 너무 긴없는 경우 클라이언트는 연결이 자동으로 해제됩니다.

      - 시간이 파라미터가 설정된 타임 아웃 (wait_timeout) 제어, 디폴트 값을 8 시간이다 .

      쿼리 동안 MySQL 서버에 분실 연결 : - 연결이 깨진 후, 클라이언트가 다시 요청을 전송하면 오류 알림을받을 것이다.

      - 계속하려면이 시간, 우리는 다시 연결 한 다음 요청을 수행해야합니다.

 

    - 긴 링크 / 짧은 연결

      - 데이터베이스 내에서, 긴 연결은 동일한 연결을 사용하고있다, 클라이언트가 요청을 계속 한 경우 연결이 성공을 의미합니다.

      -  짧은 연결이 쿼리에 몇 번 연결이 끊어 각 실행의 완료를 의미, 다음 쿼리를 재 작성하십시오.

      - PS :

        -  긴 링크는 과도한 메모리 사용 MySQL의 빠른 성장으로 이어질 것입니다.

          - 때문입니다 실행시 메모리 MySQL을 임시로 사용이 내부 연결 개체를 관리하는 것입니다.

          - 이러한 리소스는 것입니다 연결하는 경우에만 해제 .

          - 긴 링크가 축적 된 경우, 메모리 풋 프린트로 이어질 수 그래서는 너무 큰 시스템 (KMS를 죽일 강제로 MySQL의 이상을 다시 시작 있는지 현상에서).

        - 해결

          - 정기적으로 긴 연결하고 다시 시작을 분리합니다.

          - 당신이 MySQL을 5.7 이상을 사용하는 경우, 연결 자원을 다시 초기화 mysql_reset_connection을 수행하여, 각각의 수술 후 비교적 큰을 수행 할 수 있습니다.

 

  - 2 : 쿼리 캐시

    - MySQL은 얻을 쿼리 요청합니다 첫 번째 쿼리 캐시 쿼리 후

    - 당신이 캐시에 직접 키 쿼리를 찾을 수 있다면, 그 값은 클라이언트에 직접 반환됩니다.

    -하지만 대부분의 경우 나는 왜, 쿼리 캐시를 사용하지 않도록 조언을 것? 쿼리 캐시는 종종 좋은보다 더 많은 해이기 때문이다.

      - 쿼리 캐시 만료 매우 자주, 한 테이블에 대한 업데이트가있는 한,이 모든 테이블 쿼리 캐시에 비워 될 것입니다.

      - 그 결과 당신이 그것을 사용하지 않는, 계속 고군분투 가능성, 그것은 비워 전체 업데이트했다.

      -  쿼리 캐시 히트 비율은 매우 낮은 업데이트 스트레스 데이터베이스입니다 .

      - 당신의 사업은 정적 테이블을 가지고하지 않는 한, 그것은 때마다 업데이트됩니다.

      - 예를 들어, 시스템 구성 테이블은 사용 쿼리 캐시에 적합이 테이블에 쿼리합니다.

      - MySQL의 8.0에서 캐시 기능을 완전히 포기했다.

  

  --3 : 분석기

    - SQL 문을 구문 분석

    - SQL의 전체 동작의 분석

 
  --4 : 최적화
    - 최적의 솔루션의 기록을 찾아 선택
 
  
  --5 : 액츄에이터
    - 전화 스토리지 엔진이 수행
 

추천

출처www.cnblogs.com/25-lH/p/10932589.html