MySQL에서 느린 쿼리를 어떻게 식별 할 수 있습니까?
느린 쿼리 로그를 활성화하고 임계 값을 설정하여 MySQL에서 느린 쿼리를 식별 할 수 있습니다. 1. 느린 쿼리 로그를 활성화하고 임계 값을 설정하십시오. 2. 느린 쿼리 로그 파일을보고 분석하고 심층 분석을 위해 MySQLDumpSlow 또는 PT-Query 소수성과 같은 도구를 사용하십시오. 3. 인덱스 최적화, 쿼리 재 작성 및 select *의 사용을 피함으로써 느린 쿼리 최적화를 달성 할 수 있습니다.
소개
데이터베이스를 관리 할 때 성능 최적화가 최우선 과제입니다. 널리 사용되는 데이터베이스 시스템으로서 느린 쿼리를 식별하는 방법은 모든 데이터베이스 관리자에게 필수 기술입니다. 이 기사는 MySQL에서 느린 쿼리를 식별하는 방법에 대한 깊은 이해를 안내하며 이러한 기술을 사용하면 데이터베이스의 성능을 크게 향상시킬 수 있습니다.
이 기사에서는 MySQL의 느린 쿼리 로깅 기능, 구성 및 사용 방법 및 이러한 로그를 분석하여 데이터베이스의 응답 속도를 늦추는 범인을 식별하는 방법을 살펴 봅니다. 또한 실제 프로젝트에서 개인적으로 직면 한 몇 가지 문제와 솔루션을 공유하여 영감을주기를 바랍니다.
기본 지식 검토
MySQL의 Slow Query Log는 실행 시간이 특정 임계 값을 초과하는 쿼리를 로깅하는 데 유용한 도구입니다. 여기서 임계 값은 귀하의 요구에 따라 설정할 수 있습니다. 느린 쿼리 로그는 느린 쿼리를 찾는 데 도움이 될뿐만 아니라 실행 시간, 쿼리 문 자체, 영향을받는 행 수 등과 같은 이러한 쿼리에 대한 자세한 정보를 제공합니다.
Slow Query Logs를 사용하려면 MySQL 서버 에서이 기능을 활성화해야합니다. MySQL 구성 파일 (my.cnf 또는 my.ini)에서 관련 설정을 보면 확인할 수 있습니다.
핵심 개념 또는 기능 분석
느린 쿼리 로그의 정의 및 기능
Slow Query Log은 MySQL에서 실행 시간이 설정 임계 값을 초과하는 쿼리를 기록하는 데 사용하는 로그 파일입니다. 주요 기능은 데이터베이스 관리자가 데이터베이스 성능에 영향을 미치는 쿼리를 신속하게 찾아서 최적화하는 데 도움이됩니다.
-Slow Query 로그 세트를 활성화하십시오. Global slow_query_log = 'on'; - 느린 쿼리 임계 값을 10 초로 설정하십시오.
위 명령을 사용하면 느린 쿼리 로그를 활성화하고 임계 값을 설정할 수 있습니다. 이 설정은 MySQL 재시작 후에 실패하며 영구적으로 발효하려면 구성 파일을 수정해야합니다.
작동 방식
느린 쿼리 로그의 작동 원리는 복잡하지 않습니다. 쿼리의 실행 시간이 설정 한 임계 값을 초과하면 MySQL은 쿼리를 느린 쿼리 로그 파일에 기록합니다. 로그 파일은 일반적으로 MySQL의 데이터 디렉토리에 저장되며 파일 이름은 slow_query.log입니다 (구성 파일을 통해 수정할 수 있음).
실제로 사용하면 느린 쿼리 로그 파일이 매우 커질 수 있습니다. 현재 MySQL의 로그 회전 함수 사용을 고려하거나 오래된 로그를 정기적으로 청소할 수 있습니다.
사용의 예
기본 사용
느린 쿼리 로그를 보려면 로그 파일을 직접 읽을 수 있습니다.
# 느린 쿼리보기 로그 tail -f/path/to/your/mysql/data/slow_query.log
최신 느린 쿼리 로그 항목이 표시됩니다. 이 로그를 분석하려면 MySQL과 함께 제공되는 mysqldumpslow
도구를 사용할 수 있습니다.
# mysqldumpslow를 사용하여 느린 쿼리 로그를 분석하십시오.
고급 사용
실제 프로젝트에서는 느린 쿼리 로그를 보는 것만으로는 충분하지 않으며 때로는 더 자세한 분석이 필요하다는 것을 알았습니다. 예를 들어, Percona Toolkit에서 PT-Query Figest와 같은 타사 도구를 사용하여 느린 쿼리 로그를 깊이 분석 할 수 있습니다. 이 도구는보다 자세한 쿼리 통계 및 성능 분석을 제공 할 수 있습니다.
# pt-query-digest를 사용하여 느린 쿼리 로그를 분석하여 pt-query-digest/path/to/your/mysql/data/slow_query.log> slow_query_analysis.txt
일반적인 오류 및 디버깅 팁
느린 쿼리 로그를 사용할 때의 일반적인 문제에는 과도한 로그 파일로 인한 불충분 한 디스크 공간 또는 불완전한 로깅이 포함됩니다. 이러한 문제에 대한 솔루션에는 다음이 포함됩니다.
- 로그 파일을 정기적으로 청소하거나 회전시킵니다
- 실제로주의가 필요한 쿼리 만 기록되도록 느린 쿼리 임계 값을 조정하십시오.
- Percona Toolkit과 같은보다 효율적인 로그 분석 도구를 사용하십시오
성능 최적화 및 모범 사례
느린 쿼리를 최적화 할 때 다음 사항이 매우 중요하다는 것을 알았습니다.
- 인덱스 최적화 : 느린 쿼리 로그를 분석하여 인덱스를 사용하지 않은 쿼리를 찾아이 쿼리에 적절한 인덱스를 추가하십시오.
- 쿼리 다시 작성 : 때로는 간단한 쿼리 다시 작성하면 성능이 크게 향상 될 수 있습니다. 예를 들어, 하위 쿼리를 조인 작업에 다시 작성하십시오.
- ** SELECT를 사용하지 마십시오 ** : SELECT를 사용하는 대신 필요한 필드 만 선택하여 데이터 전송량을 줄이고 쿼리 성능을 향상시킬 수 있습니다.
실제 프로젝트에서는 사용되지 않았기 때문에 복잡한 쿼리가 최대 몇 분 동안 실행 된 사례를 만났습니다. 느린 쿼리 로그를 분석 하여이 문제를 발견하고 관련 필드에 인덱스를 추가했으며 쿼리 시간이 몇 분에서 몇 초로 줄었습니다.
일반적으로 MySQL에서 느린 쿼리를 식별하고 최적화하는 것은 지속적인 모니터링 및 조정이 필요한 진행중인 프로세스입니다. 이 기사가 MySQL 성능 최적화로가는 길을 한 걸음 더 나아갈 수 있기를 바랍니다.
위 내용은 MySQL에서 느린 쿼리를 어떻게 식별 할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

USEMYSQLENTERPRISEAUDITPPLUGINIFONTERERPRISEEDITIONSERVER-AUDIT = force_plus_permanentandCustomizeeVentsViaser_Audit_events;

MySQL은 버전 8.0.16에서 효과적인 도메인 무결성을 강제하기위한 체크 제약 조건을 지원합니다. 1. 표를 작성할 때 제약 조건을 추가하십시오 : CreateTable을 사용하여 ≥18, 급여> 0, 부서 한계 값과 같은 점검 조건을 정의하십시오. 2. 제약 조건을 추가하기 위해 테이블을 수정하십시오. AltertableAddConstraint를 사용하여 비어 있지 않은 이름과 같은 필드 값을 제한하십시오. 3. 복잡한 조건 사용 : 종료 날짜 ≥ 스테이트 날짜 및 완료 상태와 같은 다중 열 논리 및 표현을 지원하십시오. 완료 상태에는 종료 날짜가 있어야합니다. 4. 제약 조건 삭제 : altertabledropconstraint를 사용하여 삭제할 이름을 지정합니다. 5. 노트 : MySQL8.0.16, Innodb 또는 Myisam을 인용해야합니다.

TosecureMySQLeffectively,useobject-levelprivilegestolimituseraccessbasedontheirspecificneeds.Beginbyunderstandingthatobject-levelprivilegesapplytodatabases,tables,orcolumns,offeringfinercontrolthanglobalprivileges.Next,applytheprincipleofleastprivile

useamany-to-manyrelationshipwithajunctiontabletolinkitemsandtagsviathreetables : 항목, 태그, anditem_tags.2

대형 테이블을 다룰 때 MySQL 성능 및 유지 보수 가능성은 직면하고 구조 설계, 인덱스 최적화, 테이블 하위 테이블 전략 등을 시작해야합니다. 1. 기본 키 및 색인을 합리적으로 설계해야합니다. 자체 증가 정수를 기본 키로 사용하여 페이지 분할을 줄이는 것이 좋습니다. 오버레이 인덱스를 사용하여 쿼리 효율성을 향상시킵니다. 느린 쿼리 로그를 정기적으로 분석하고 유효하지 않은 인덱스를 삭제하십시오. 2. 파티션 테이블의 합리적 사용 : 시간 범위 및 쿼리 및 유지 보수 효율성을 향상시키기위한 기타 전략에 따른 파티션이지만 분할 및 절단 문제에주의를 기울여야합니다. 3. 분리 및 도서관 분리를 읽고 쓰고 쓰는 것을 고려하십시오 : 읽기 및 쓰기 분리는 메인 라이브러리의 압력을 완화시킵니다. 라이브러리 분리 및 테이블 분리는 많은 양의 데이터가있는 시나리오에 적합합니다. 미들웨어를 사용하고 거래 및 크로스 스토어 쿼리 문제를 평가하는 것이 좋습니다. 초기 계획과 지속적인 최적화가 핵심입니다.

MySQL에 모든 데이터베이스를 표시하려면 ShowDatabases 명령을 사용해야합니다. 1. MySQL 서버에 로그인 한 후 ShowDatabase를 실행할 수 있습니다. 현재 사용자가 액세스 할 권한이있는 모든 데이터베이스를 나열하도록 명령. 2. Information_Schema, MySQL, Performance_Schema 및 SYS와 같은 시스템 데이터베이스는 기본적으로 존재하지만 권한이 부족한 사용자는이를 볼 수 없을 수 있습니다. 3. SelectSchema_namefrominformation_schema.schemata를 통해 데이터베이스를 쿼리하고 필터링 할 수도 있습니다. 예를 들어, 사용자가 만든 데이터베이스 만 표시하려면 시스템 데이터베이스를 제외합니다. 사용하십시오

기존 테이블에 기본 키를 추가하려면 AddPrimarykey 절을 사용하여 Altertable 문을 사용하십시오. 1. 대상 열에 널 값이없고 복제가 없으며 NOTNULL로 정의되어 있는지 확인하십시오. 2. 단일 열차 기본 키 구문은 Altertable 테이블 이름 AddPrimaryKey (열 이름)입니다. 3. 멀티 컬럼 조합 기본 키 구문은 Altertable 테이블 이름 AddPrimaryKey (열 1, 열 2)입니다. 4. 열에서 NULL을 허용하는 경우 먼저 NOTNULL을 설정하도록 수정을 실행해야합니다. 5. 각 테이블에는 하나의 기본 키만이있을 수 있으며 추가하기 전에 기존 기본 키를 삭제해야합니다. 6. 직접 늘려야하는 경우 modify를 사용하여 auto_increment를 설정할 수 있습니다. 작동하기 전에 데이터를 확인하십시오

MySQL 서비스가 실행 중인지 확인하고 sudosystemctlstatusmysql을 사용하여 확인하고 시작하십시오. 2. 원격 연결을 허용하고 서비스를 다시 시작하기 위해 BAND-ADDRESS가 0.0.0.0으로 설정되어 있는지 확인하십시오. 3. 3306 포트가 열려 있는지 확인하고 포트를 허용하도록 방화벽 규칙을 확인하고 구성하십시오. 4. "AccessDenied"오류의 경우 사용자 이름, 비밀번호 및 호스트 이름을 확인한 다음 MySQL에 로그인하여 MySQL.user 테이블을 쿼리하여 권한을 확인해야합니다. 필요한 경우 사용자를 생성하거나 업데이트하여 'Your_user'@'%'사용과 같은 승인; 5. Caching_sha2_password로 인해 인증이 손실 된 경우
