찾다
데이터 베이스MySQL 튜토리얼[MySQL 데이터베이스] 3장 해석: 서버 성능 분석(1부)

머리말:

빈 컵 정신을 유지하고, 성능 분석을 사용하고, 서버의 시간이 어디에 소비되는지 측정하는 데 집중하세요. 1. 서버가 최적의 성능 상태에 도달했는지 확인하는 방법, 2. 특정 진술은 왜 충분히 빠르지 않으며 진단은 사용자가 "일시 중지, 축적 및 중단"으로 설명하는 간헐적이고 어려운 오류입니다.

다음으로 전체 시스템의 성능을 최적화하고 실행 속도를 최적화하는 몇 가지 도구와 기술을 소개하겠습니다. 단일 명령문으로 시스템을 측정하고 프로파일링 보고서를 생성하는 방법과 시스템 스택을 분석하는 방법을 보여줍니다.

3.1 소개

성능: 소요 시간을 측정합니다. 작업 완료, 즉 성능은 응답 시간입니다

처리량: 단위 시간 데이터 쿼리(성능 정의의 역수)

1단계: 시간이 어디로 갔는지, 어디에서 소비되었는지 파악

대답이 다음과 같다면 측정을 통해 찾을 수 없으면 측정 방법이 잘못되었거나 완벽하지 않습니다. 필요한 것만 측정합니다. 최적화된 활동

잘못된 시간에 테스트를 시작하거나 중지하지 마십시오. 측정되는 것은 대상 활동이 아닌 집계된 정보입니다. 하위 작업을 찾아서 최적화해야 합니다

원칙: 측정할 수 없으면 효과적으로 최적화할 수 없습니다

3.1.1 성능 프로파일링을 통한 최적화

성능 프로파일링: 측정 및 분석의 주요 방법 시간이 소요되는 위치

1. 작업에 소요된 시간 측정 2. 통계 및 결과 정렬(중요 앞줄)

성과 분석 보고서에 필요한 결과에 유사한 작업 요약이 포함될 수 있습니다. 모든 작업 및 각 줄에 작업 기록:

작업 이름, 실행 시간, 소비 시간, 평균 실행 시간, 전체 시간에 대한 비율 계산

성능 분석 유형:

실행 시간 기반 분석: 실행 시간이 가장 오래 걸리는 작업

대기 기반 분석: 작업이 가장 오랫동안 차단된 위치 확인

3.1.2 성능 분석 이해

누락되었지만 중요한 정보 성능 분석:

1. 최적화할 가치가 있는 쿼리

전체 응답 시간에서 작은 비율을 차지하는 쿼리는 최적화할 가치가 없습니다. 비용이 이익보다 크므로 최적화를 중지하세요

2. 예를 들어, 실행 횟수는 적지만 매번 유난히 느린 작업

3. 알 수 없음 알 수 없음

손실 시간: 작업의 총 시간은 실제 측정된 시간을 기준으로 하며, 찾지 못한 경우에도 마찬가지입니다. , 이러한 문제가 발생할 가능성에 주의해야 합니다

4. 숨겨진 세부 정보

모든 응답 시간, 추가 정보, 히스토그램, 백분율, 표준 편차 및 편차 지수의 분포를 표시하는 것은 불가능합니다

5. 디스플레이 스택의 상위 수준에서 대화형 분석

3.2 애플리케이션의 성능 분석: 하향식

성능 병목 현상에 영향을 미치는 요소:

1. 외부 리소스, 외부 웹 서비스 또는 검색 엔진 호출

2 애플리케이션에는 다음이 필요합니다. 많은 양의 데이터를 처리하고 매우 큰 XML 파일을 분석하려면

3. 루프에서 비용이 많이 드는 작업 실행: 일반 규칙 남용

4. 비효율적인 알고리즘 사용: 무차별 검색 알고리즘

권장 사항: 새 프로젝트에는 다음을 포함하는 것이 좋습니다. 성능 분석을 위한 코드

3.2.1 PHP 애플리케이션 측정: 비어 있음

3.3 MySQL 쿼리 분석

3.3.1 서버 로드 분석

로그 파일에 대한 MySQL 쿼리 가져오기:

1. 느린 쿼리 로그: 낮은 오버헤드, 높은 정확도 , 대용량 디스크 공간, 장기 활성화 로그 회전 도구 배포에 주의하세요. 5.1 이후 마이크로초 수준에서 로드 샘플을 수집하는 동안에만 활성화할 수 있습니다.

2. 쿼리 요청 시 기록되는 일반 로그. 서버로 전송되며 응답 시간 및 실행 계획은 포함되지 않습니다

쿼리 로그 분석

위에서 아래로 먼저 분석 보고서(pt-query-digest)를 생성하고 특별히 관심 있는 부분을 확인합니다

3.3 .2 단일 쿼리 분석

왜 그렇게 오래 걸리는지 생각해 보세요. 최적화 방법

SHOW PROFILE 사용 후: MySQL5.1

보기: "%pro%"와 같은 변수 표시 [출처]

기본적으로 비활성화됨 , 활성화: set profiling=1; 그런 다음 서버에서 명령문을 실행합니다(set profiling 끄기 =off;)

Syntax:

SHOW PROFILE [type [, type] ... ]  
    [FOR QUERY n]  
    [LIMIT row_count [OFFSET offset]]  
  
type:  
    ALL                --显示所有的开销信息  
  | BLOCK IO           --显示块IO相关开销  
  | CONTEXT SWITCHES   --上下文切换相关开销  
  | CPU                --显示CPU相关开销信息  
  | IPC                --显示发送和接收相关开销信息  
  | MEMORY             --显示内存相关开销信息  
  | PAGE FAULTS        --显示页面错误相关开销信息  
  | SOURCE             --显示和Source_function,Source_file,Source_line相关的开销信息  
  | SWAPS              --显示交换次数相关开销的信息
实质是这些开销信息被记录到information_schema.profiling表
show profiles;查看
show profile for query 2; 获取指定查询的开销(第二条查询开销明细)
show profile cpu for query 2 ;查看特定部分的开销,如下为CPU部分的开销 
show profile block io,cpu for query 2;  同时查看不同资源开销
SHOW STATUS 사용: counter

특정 연결을 기반으로 전역 상태 표시 세션 수준, 범위에 주의하세요

카운터는 일반적으로 사용되는 활동 빈도를 보여줍니다. 핸들 카운터, 임시 파일 및 테이블 카운터

는 임시 테이블을 생성하고 핸들(참조, 포인터? ) 이 임시 테이블에 액세스하여 상태 표시 결과의 해당 번호에 영향을 미칩니다

느린 쿼리 로그 사용: [소스] [소스]

응답 시간

이 느린 쿼리 로그에 대한

임계값 long_query_time을 초과하는 MySQL의 기록 문( 로그는 파일이나 데이터베이스 테이블에 쓸 수 있습니다. 고성능 요구사항이 있는 경우 파일에 쓰는 것이 좋습니다. 기본값은 10초이며 수동으로 켜야 합니다.보기:

​​​​

(1)slow_query_log的值为ON为开启慢查询日志,OFF则为关闭慢查询日志。

(2)slow_query_log_file 的值是记录的慢查询日志到文件中(注意:默认名为主机名.log,慢查询日志是否写入指定文件中,需要指定慢查询的输出日志格式为文件,相关命令为:show variables like ‘%log_output%’;去查看输出的格式)。

(3)long_query_time 指定了慢查询的阈值,即如果执行语句的时间超过该阈值则为慢查询语句,默认值为10秒。

(4)log_queries_not_using_indexes 如果值设置为ON,则会记录所有没有利用索引的查询(注意:如果只是将log_queries_not_using_indexes设置为ON,而将slow_query_log设置为OFF,此时该设置也不会生效,即该设置生效的前提是slow_query_log的值设置为ON),一般在性能调优的时候会暂时开启,开启后使用full index scan的sql也会被记录到慢查询日志。

//上述命令只对当前生效,当MySQL重启失效,如果要永久生效,需要配置my.cnf

查看输出格式:文件?表show variables like ‘%log_output%’;

开启通用日志查询: set global general_log=on;

关闭通用日志查询: set globalgeneral_log=off;

设置通用日志输出为表方式: set globallog_output=’TABLE’;

设置通用日志输出为文件方式: set globallog_output=’FILE’;

设置通用日志输出为表和文件方式:set global log_output=’FILE,TABLE’;

查询慢查询语句的个数:show global status like ‘%slow%’;

日志部分内容简介:

哪条语句导致慢查询(sql_text),该慢查询语句的查询时间(query_time),锁表时间(Lock_time),以及扫描过的行数(rows_examined)等信息。

利用自带的慢查询日志分析工具:mysqldumpslow

perl mysqldumpslow –s c –t 10 slow-query.log

-s 表示按何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;-t 表示top的意思,后面跟着的数据表示返回前面多少条;-g 后面可以写正则表达式匹配,大小写不敏感。

使用Performance Schema:【源】【源】

监视MySQL服务器,收集性能参数,且表的存储引擎PERFORMANCE_SCHEMA,低耗能

本地服务器,表是内存表,表内容在服务器启动时重新填充,关闭时丢弃,更改不会被复制或写入二进制日志

特性:

性能方案配置可被动态的执行SQL修改,立即影响到数据收集

监控服务事件:事件是服务做并被感知到的任何事,时间信息可被收集

数据库性能方案,提供对运行时数据库服务进行内部检查的方式,关注性能数据

特定于一个数据库服务,数据库表关联到数据服务,修改不会被备份也不写进二进制日志

存储引擎用“感知点”收集事件数据,且存储在performance_schema数据库,可通过select语句进行查询

补充:数据库初始安装有三个基本库

mysql

    包含权限配置,事件,存储引擎状态,主从信息,日志,时区信息,用户权限配置等

information_schema

    对数据库元数据的抽象分析,由此提供了SQL语句方式来查询数据库运行时状态,每次对information_schema的查询都产生对metadata的互斥访问,影响其他数据库的访问性能。

performance_schema

    内存型数据库,使用performance_schema 存储引擎,通过事件机制将mysql服务的运行时状态采集并存储在performace_schema数据库。注意,两个单词之间用下划线连接时,表示performance_schema是一个数据库;用空格分开时,表示一个数据库性能方案,也表示一个存储引擎。

 相关文章:

【MySQL数据库】第三章解读:服务器性能剖析 (下)

【MySQL数据库】第二章解读:MySQL基准测试

위 내용은 [MySQL 데이터베이스] 3장 해석: 서버 성능 분석(1부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL 성능을 모니터링하는 데 사용할 수있는 몇 가지 도구는 무엇입니까?MySQL 성능을 모니터링하는 데 사용할 수있는 몇 가지 도구는 무엇입니까?Apr 23, 2025 am 12:21 AM

MySQL 성능을 효과적으로 모니터링하는 방법은 무엇입니까? Mysqladmin, Showglobalstatus, Perconamonitoring and Management (PMM) 및 MySQL Enterprisemonitor와 같은 도구를 사용하십시오. 1. MySQLADMIN을 사용하여 연결 수를보십시오. 2. showglobalstatus를 사용하여 쿼리 번호를보십시오. 3.pmm은 자세한 성능 데이터 및 그래픽 인터페이스를 제공합니다. 4. MySQLENTERPRISOMITOR는 풍부한 모니터링 기능 및 경보 메커니즘을 제공합니다.

MySQL은 SQL Server와 어떻게 다릅니 까?MySQL은 SQL Server와 어떻게 다릅니 까?Apr 23, 2025 am 12:20 AM

MySQL과 SqlServer의 차이점은 1) MySQL은 오픈 소스이며 웹 및 임베디드 시스템에 적합합니다. 2) SQLServer는 Microsoft의 상용 제품이며 엔터프라이즈 수준 애플리케이션에 적합합니다. 스토리지 엔진의 두 가지, 성능 최적화 및 응용 시나리오에는 상당한 차이가 있습니다. 선택할 때는 프로젝트 규모와 향후 확장 성을 고려해야합니다.

MySQL을 통해 어떤 시나리오에서 SQL Server를 선택할 수 있습니까?MySQL을 통해 어떤 시나리오에서 SQL Server를 선택할 수 있습니까?Apr 23, 2025 am 12:20 AM

고 가용성, 고급 보안 및 우수한 통합이 필요한 엔터프라이즈 수준의 응용 프로그램 시나리오에서는 MySQL 대신 SQLServer를 선택해야합니다. 1) SQLServer는 고 가용성 및 고급 보안과 같은 엔터프라이즈 수준의 기능을 제공합니다. 2) VisualStudio 및 Powerbi와 같은 Microsoft Ecosystems와 밀접하게 통합되어 있습니다. 3) SQLSERVER는 성능 최적화에서 우수한 성능을 발휘하며 메모리 최적화 된 테이블 및 열 스토리지 인덱스를 지원합니다.

MySQL은 문자 세트 및 콜라이트를 어떻게 처리합니까?MySQL은 문자 세트 및 콜라이트를 어떻게 처리합니까?Apr 23, 2025 am 12:19 AM

mysqlmanagesCharactersetsandcollationsUtf-8AsthedEfault, confonfigurationAtdatabase, 테이블 및 columnlevels, andcolumnlevels, andcolumnlevels, andcolumnlevels, 1) setDefaultCharactersetandcollationforadatabase.2) secigurecharactersetandcollation

MySQL의 트리거는 무엇입니까?MySQL의 트리거는 무엇입니까?Apr 23, 2025 am 12:11 AM

MySQL 트리거는 특정 데이터 작업이 수행 될 때 일련의 작업을 수행하는 데 사용되는 테이블과 관련된 자동 실행 된 저장 프로 시저입니다. 1) 트리거 정의 및 기능 : 데이터 검증, 로깅 등에 사용됩니다. 2) 작업 원칙 : 전후에 나누어지고 행 수준 트리거링을 지원합니다. 3) 사용의 예 : 급여 변경을 기록하거나 재고를 업데이트하는 데 사용할 수 있습니다. 4) 디버깅 기술 : ShowTriggers 및 ShowCreateTrigger 명령을 사용하십시오. 5) 성능 최적화 : 복잡한 작업을 피하고 인덱스 사용 및 거래 관리.

MySQL에서 사용자 계정을 어떻게 작성하고 관리합니까?MySQL에서 사용자 계정을 어떻게 작성하고 관리합니까?Apr 22, 2025 pm 06:05 PM

MySQL에서 사용자 계정을 작성하고 관리하는 단계는 다음과 같습니다. 1. 사용자 만들기 : CreateUser'Newuser '@'localhost'Identifiedby'Password '; 2. 권한 할당 : GrantSelect 사용, 삽입, UpdateOnmyDatabase.to'newuser'@'localhost '; 3. 권한 오류 수정 : Revokeallprivilegesonmydatabase.from'Newuser'@'localhost '; 그런 다음 권한을 재 할당합니다. 4. 최적화 권한 : showgra를 사용하십시오

MySQL은 Oracle과 어떻게 다릅니 까?MySQL은 Oracle과 어떻게 다릅니 까?Apr 22, 2025 pm 05:57 PM

MySQL은 빠른 개발 및 중소형 응용 프로그램에 적합한 반면 Oracle은 대기업 및 고 가용성 요구에 적합합니다. 1) MySQL은 오픈 소스이며 사용하기 쉬우 며 웹 응용 프로그램 및 중소 기업에 적합합니다. 2) Oracle은 강력하고 대기업 및 정부 기관에 적합합니다. 3) MySQL은 다양한 스토리지 엔진을 지원하며 Oracle은 풍부한 엔터프라이즈 수준의 기능을 제공합니다.

다른 관계형 데이터베이스와 비교하여 MySQL을 사용하는 단점은 무엇입니까?다른 관계형 데이터베이스와 비교하여 MySQL을 사용하는 단점은 무엇입니까?Apr 22, 2025 pm 05:49 PM

다른 관계형 데이터베이스와 비교하여 MySQL의 단점에는 다음이 포함됩니다. 1. 성능 문제 : 대규모 데이터를 처리 할 때 병목 현상을 만날 수 있으며 PostgreSQL은 복잡한 쿼리 및 빅 데이터 처리에서 더 잘 수행됩니다. 2. 확장 성 : 수평 스케일링 능력은 Google 스패너 및 Amazon Aurora만큼 좋지 않습니다. 3. 기능 제한 : 고급 기능에서 PostgreSQL 및 Oracle만큼 좋지 않으면 일부 기능에는 더 많은 사용자 정의 코드 및 유지 관리가 필요합니다.

See all articles

핫 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 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구