데이터 베이스 MySQL 튜토리얼 MySQL에서의 explain 사용 및 성능 분석

MySQL에서의 explain 사용 및 성능 분석

Dec 06, 2017 am 09:24 AM
explain mysql 성능

MySQL은 개발자가 최적화할 수 있도록 SELECT 문을 분석하고 SELECT 실행에 대한 자세한 정보를 출력할 수 있는 EXPLAIN 명령을 제공합니다. EXPLAIN 명령의 사용법은 MySQL 성능 분석 및 사용법 설명에 중점을 둡니다. 이 글에서는 내용을 소개하기 위해 몇 가지 실제 사례를 통해 이 과정을 소개하겠습니다!

1. 분석 결과를 보려면 explain 문을 사용하십시오.

예를 들어

explain select * from test1 where id=1;
로그인 후 복사

가 나타납니다.

id  selecttype  table  type possible_keys  key key_len  ref rows  extra各列。
로그인 후 복사

그 중

type=const는

key를 통해 한 번 발견된다는 의미입니다. =primary는 기본 키가 사용됨을 의미합니다.

type=all은 전체 테이블 스캔을 의미합니다.

key=null은 인덱스가 사용되지 않음을 의미합니다. type=ref, 이때는 여러 개의 일치하는 행으로 간주되기 때문에 공동 쿼리에서는 일반적으로 REF입니다.

2. MYSQL의 결합 인덱스

테이블에 id, key1, key2, key3이 있고 이 세 가지가 결합된 인덱스를 형성한다고 가정하면

예:

where key1=....     
where key1=1 and key2=2     
where key1=3 and key3=3 and key2=2
로그인 후 복사

가장 왼쪽 원칙에 따라 다음이 가능합니다. key1=1 order by key3인 테스트와 같이 Indexed로 사용하면 explain으로 분석하면 Normal_key 인덱스만 사용되지만 where 절에서만 작동하며 후속 순서는 정렬해야 합니다.

3. 느린 쿼리 분석 사용

my.ini에서:

long_query_time=1
log-slow-queries=d:\mysql5\logs\mysqlslow.log
로그인 후 복사

1초 이상 느린 쿼리 로그를 기록하세요

mysqlsla를 사용하여 분석할 수 있습니다.

DMS와 같은 mysqlreport를 사용하여 선택, 업데이트, 삽입, 삭제, 교체 등의 비율을 분석할 수도 있습니다.

4. MYISAM 및 INNODB 잠금

myisam에서는 테이블 잠금에 주의하세요. 예를 들어 여러 UPDATE 작업을 수행한 후 다시 선택하면 SELECT 작업이 잠겨 있음을 알 수 있습니다. SELECT

Innodb를 사용하려면 모든 UPDATE 작업이 완료될 때까지 기다려야 합니다. 위의 문제는 그렇지 않습니다.

5. MYSQL의 트랜잭션 구성 항목

innodb_flush_log_at_trx_commit=1
로그인 후 복사

은 트랜잭션이 커밋되면 트랜잭션 로그가 즉시 디스크에 기록되고 데이터와 인덱스도 동시에 업데이트된다는 의미입니다.

innodb_flush_log_at_trx_commit=0
로그인 후 복사

트랜잭션이 제출되면 트랜잭션 로그가 즉시 디스크에 기록되지 않습니다.

innodb_flush_log_at_trx_commit=2
로그인 후 복사

트랜잭션이 제출되면 즉시 디스크 파일에 기록됩니다. 커널 버퍼에 기록되었지만 즉시 새로 고쳐지지 않음) 디스크에 있지만 1초마다 디스크에 새로 고쳐지고 데이터와 인덱스가 동시에 업데이트됩니다

사용법 설명

EXPLAIN tbl_name或:EXPLAIN [EXTENDED] SELECT select_options
로그인 후 복사

전자는 다음과 같은 필드 구조를 얻을 수 있습니다. table 등이며, 후자는 주로 관련 인덱스 정보를 제공하며 오늘 논의의 초점은 후자입니다.

mysql> explain select * from event;  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
| 1 | SIMPLE | event | ALL | NULL | NULL | NULL | NULL | 13 | |  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
1 row in set (0.00 sec)
로그인 후 복사

쿼리 유형을 선택합니다. 주로 일반 쿼리와 통합 쿼리 및 하위 쿼리와 같은 복잡한 쿼리를 구분합니다.

select_type
로그인 후 복사

통합 쿼리에서 사용하는 유형

type은 행 출력에서 ​​참조하는 테이블입니다. 더 중요한 지표입니다. 최고에서 최악까지의 결과 값은 다음과 같습니다.

일반적으로 쿼리가 최소한 범위 수준에 도달하는지 확인해야 합니다. ref는

possible_keys

를 나타냅니다. 인덱스 MySQL은 테이블에서 행을 찾는 데 사용할 수 있습니다. 비어 있으면 관련 인덱스가 없습니다. 성능을 향상하려면 WHERE 절을 확인하여 일부 필드가 참조되는지 확인하거나 해당 필드가 해당 필드에 적합하지 않은지 확인할 수 있습니다.

key

MySQL이 실제로 사용하기로 결정한 키를 표시합니다. 인덱스를 선택하지 않은 경우 키는 NULL입니다. key_len

키가 NULL인 경우 키 길이를 표시합니다. 길이는 NULL입니다. 이 값에 특별한 주의를 기울이면 mysql이 실제로 다중 기본 키에서 사용하는 것이 무엇인지 확인할 수 있습니다.

rows

이 숫자는 어떤 필드 또는 상수인지 보여줍니다.

Extra

Only.index인 경우 이는 전체 테이블을 스캔하는 것보다 인덱스 트리의 정보만 사용하여 정보를 검색한다는 의미입니다.

Where가 불가능하다면 where는 필요하지 않다는 뜻입니다.

이 정보에 Using filesort 또는 Using temporary가 표시되면 WHERE와 ORDER BY의 인덱스는 고려하지 못하는 경우가 많습니다. WHERE를 기준으로 인덱스를 결정하면 ORDER BY를 사용할 때 필연적으로 문제가 발생하므로 비용 측면에서 더 효율적인지 여부가 결정됩니다. 먼저 필터링한 다음 정렬하는 것이 더 비용 효율적인지

요약:

여기에서는 MySQL 성능 분석 및 사용법 설명에 대해 소개했습니다. 저도 이에 대해 어느 정도 이해하고 있습니다.

Mysql에서 EXPLAIN의 역할

mysql 느린 쿼리 및 EXPLAIN 소개

MySQL 쿼리 성능 분석 도구 - 키워드 분석 설명

mysql 설명 유형 연결 유형 예

위 내용은 MySQL에서의 explain 사용 및 성능 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL : 초보자를위한 데이터 관리의 용이성 MySQL : 초보자를위한 데이터 관리의 용이성 Apr 09, 2025 am 12:07 AM

MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.

Navicat에서 데이터베이스 비밀번호를 검색 할 수 있습니까? Navicat에서 데이터베이스 비밀번호를 검색 할 수 있습니까? Apr 08, 2025 pm 09:51 PM

Navicat 자체는 데이터베이스 비밀번호를 저장하지 않으며 암호화 된 암호 만 검색 할 수 있습니다. 솔루션 : 1. 비밀번호 관리자를 확인하십시오. 2. Navicat의 "비밀번호 기억"기능을 확인하십시오. 3. 데이터베이스 비밀번호를 재설정합니다. 4. 데이터베이스 관리자에게 문의하십시오.

MySQL : 쉽게 학습하기위한 간단한 개념 MySQL : 쉽게 학습하기위한 간단한 개념 Apr 10, 2025 am 09:29 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

Navicat Premium을 만드는 방법 Navicat Premium을 만드는 방법 Apr 09, 2025 am 07:09 AM

Navicat Premium을 사용하여 데이터베이스 생성 : 데이터베이스 서버에 연결하고 연결 매개 변수를 입력하십시오. 서버를 마우스 오른쪽 버튼으로 클릭하고 데이터베이스 생성을 선택하십시오. 새 데이터베이스의 이름과 지정된 문자 세트 및 Collation의 이름을 입력하십시오. 새 데이터베이스에 연결하고 객체 브라우저에서 테이블을 만듭니다. 테이블을 마우스 오른쪽 버튼으로 클릭하고 데이터 삽입을 선택하여 데이터를 삽입하십시오.

MariaDB 용 Navicat에서 데이터베이스 비밀번호를 보는 방법은 무엇입니까? MariaDB 용 Navicat에서 데이터베이스 비밀번호를 보는 방법은 무엇입니까? Apr 08, 2025 pm 09:18 PM

MariaDB 용 Navicat은 암호가 암호화 된 양식으로 저장되므로 데이터베이스 비밀번호를 직접 볼 수 없습니다. 데이터베이스 보안을 보장하려면 비밀번호를 재설정하는 세 가지 방법이 있습니다. Navicat을 통해 비밀번호를 재설정하고 복잡한 비밀번호를 설정하십시오. 구성 파일을 봅니다 (권장되지 않음, 위험이 높음). 시스템 명령 줄 도구를 사용하십시오 (권장되지 않으면 명령 줄 도구에 능숙해야 함).

MySQL 및 SQL : 개발자를위한 필수 기술 MySQL 및 SQL : 개발자를위한 필수 기술 Apr 10, 2025 am 09:30 AM

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

Navicat에서 MySQL에 새로운 연결을 만드는 방법 Navicat에서 MySQL에 새로운 연결을 만드는 방법 Apr 09, 2025 am 07:21 AM

응용 프로그램을 열고 새로운 연결 (Ctrl n)을 선택하여 Navicat에서 새로운 MySQL 연결을 만들 수 있습니다. "MySQL"을 연결 유형으로 선택하십시오. 호스트 이름/IP 주소, 포트, 사용자 이름 및 비밀번호를 입력하십시오. (선택 사항) 고급 옵션을 구성합니다. 연결을 저장하고 연결 이름을 입력하십시오.

Navicat에서 SQL을 실행하는 방법 Navicat에서 SQL을 실행하는 방법 Apr 08, 2025 pm 11:42 PM

Navicat에서 SQL을 수행하는 단계 : 데이터베이스에 연결하십시오. SQL 편집기 창을 만듭니다. SQL 쿼리 또는 스크립트를 작성하십시오. 실행 버튼을 클릭하여 쿼리 또는 스크립트를 실행하십시오. 결과를 봅니다 (쿼리가 실행 된 경우).

See all articles