INFORMATION_SCHEMA.프로파일링
INFORMATION_SCHEMA PROFILING 테이블
PROFILING 테이블은 구문 분석 정보를 제공합니다. 그 내용은 SHOW PROFILES 및 SHOW PROFILE 문에 의해 생성된 정보에 해당합니다.
INFORMATION_SCHEMA Name | SHOW Name | Notes |
---|---|---|
QUERY_ID | Query_ID | Identification |
SEQ |
| 같은 QUERY_ID 값을 갖는 행의 표시 순서에 대한 일련번호 |
STATE | Status | 행은 해당 분석 상태를 측정합니다. |
DURATION | Duration | 주어진 상태 실행은 초 단위로 유지됩니다. |
사용자 CPU 사용량(초 단위) | CPU_SYSTEM | |
시스템 CPU 사용량(초 단위) | CONTEXT_ VOLUNTARY | |
자발적 맥락 스위치가 발생했습니다 | CONTEXT_INVOLUNTARY | |
비자발적 컨텍스트 스위치가 발생했습니다 | BLOCK_OPS_IN | |
입력 차단 작업 수 | BLOCK _OPS_OUT | |
출력 차단 동작 | 개수 | MESSAGES_SENT |
보낸 커뮤니케이션 메시지 수 | MESSAGES_RECEIVED | |
수신한 커뮤니케이션 메시지 수 | PAGE_FAULTS_MAJOR | |
기본 페이지 오류 수 | PAGE_FAULTS_MINOR | |
페이지 오류 수 | SWAPS | |
스왑이 발생한 횟수 | SOURCE_FUNCTION | |
에 대한 정보 소스코드 실행 분석 현황 위치 | SOURCE_FILE | |
소스코드 실행 분석 상태 위치 정보 | SOURCE_LINE | |
소스 코드 실행 분석 상태 위치 정보 | 13.7.5.31 SHOW PROFILES 구문 |
13.7.5.30 SHOW PROFILE 구문
SHOW PROFILES
선택적 유형 값을 지정하여 특정 다른 유형의 정보를 표시할 수 있습니다(PROFILING의 필드에 해당):
typeBLOCK IO | |
CONTEXT SWITCHES | |
CPU | |
IPC | |
MEMORY | |
PAGE FAULTS | |
소스 | |
SWAPS | |
SHOW PROFILE和SHOW PROFILES语句显示分析信息,指示在当前会话过程中执行的语句的资源使用情况。 Profiling由Profiling会话变量控制,默认值为0(OFF)。 通过将Profiling设置为1或ON可启用分析: mysql> SET profiling = 1; 로그인 후 복사 SHOW PROFILES显示发送到服务器的最新语句的列表。 列表的大小由profiling_history_size会话变量控制,该变量的默认值为15.最大值为100.将值设置为0具有禁用性能分析的实际效果。 除SHOW PROFILE和SHOW PROFILES之外,所有语句都进行了概要分析,因此您将不会在配置文件列表中找到这些语句。 对于格式错误的执行语句,例如SHOW PROFILING是一个非法语句,如果您尝试执行该语句,则会出现语法错误,但会显示在概要分析列表中。 SHOW PROFILE显示有关单个语句的详细信息,如果没有追加FOR QUERY n子句,输出与最近执行的语句相关;否则展示特定语句的信息。 n的值对应于SHOW PROFILES显示的Query_ID值。 可以给出LIMIT row_count子句以将输出限制为row_count行。如果给定了LIMIT,则可以添加OFFSET偏移以将输出偏移行开始到整组行。 默认情况下,SHOW PROFILE显示状态和持续时间列。 每个会话启用分析。会话结束时,其分析信息丢失。 说了那么多,上面这些已经被废弃啦!!!! Note:
Action已知: mysql root@127.0.0.1:nt> SELECT * FROM student +------+--------+-------+-------+| id | name | age | sex | |------+--------+-------+-------|| 1 | s1 | 12 | m | | 2 | s2 | 12 | w | | 3 | s3 | 11 | w | +------+--------+-------+-------+3 rows in setTime: 0.004s mysql root@127.0.0.1:nt> SELECT * FROM teacher +------+--------+| id | name | |------+--------|| 1 | Han | | 2 | Gou | | 3 | Eric | +------+--------+3 rows in setTime: 0.002s mysql root@127.0.0.1:nt> SELECT * FROM course +------+--------------+----------------+| id | teacher_id | name | |------+--------------+----------------|| 1 | 1 | Advanced Maths | | 2 | 2 | English | | 3 | 3 | Arts | | 4 | 1 | Physics | | 5 | 3 | Programming | +------+--------------+----------------+5 rows in setTime: 0.003s mysql root@127.0.0.1:nt> SELECT * FROM score +--------------+-------------+---------+| student_id | course_id | score | |--------------+-------------+---------|| 1 | 1 | 78 | | 1 | 2 | 56 | | 1 | 3 | 89 | | 1 | 4 | 60 | | 1 | 5 | 92 | | 2 | 1 | 92 | | 2 | 2 | 60 | | 2 | 3 | 78 | | 2 | 4 | 77 | | 2 | 5 | 95 | | 3 | 1 | 66 | | 3 | 2 | 50 | | 3 | 3 | 78 | | 3 | 4 | 67 | | 3 | 5 | 86 | +--------------+-------------+---------+15 rows in setTime: 0.003s 로그인 후 복사 解:高数比美术分数高的学生信息 SELECT S.* FROM (SELECT SC1.STUDENT_ID,SC1.COURSE_ID,SC1.SCORE FROM score SC1) A, (SELECT SC2.STUDENT_ID,SC2.COURSE_ID,SC2.SCORE FROM score SC2) B, student S WHERE A.STUDENT_ID=B.STUDENT_ID AND A.COURSE_ID=1 AND B.COURSE_ID=3 AND A.SCORE>B.SCORE AND A.STUDENT_ID=S.ID; 로그인 후 복사 mysql root@127.0.0.1:nt> SELECT @@profiling +---------------+ | @@profiling | |---------------| | 0 | +---------------+ 1 row in set Time: 0.002s mysql root@127.0.0.1:nt> SET profiling = 1 Query OK, 0 rows affected Time: 0.001s mysql root@127.0.0.1:nt> SELECT S.* -> FROM (SELECT SC1.STUDENT_ID,SC1.COURSE_ID,SC1.SCORE FROM score SC1) A, -> (SELECT SC2.STUDENT_ID,SC2.COURSE_ID,SC2.SCORE FROM score SC2) B, -> student S -> WHERE A.STUDENT_ID=B.STUDENT_ID -> AND A.COURSE_ID=1 -> AND B.COURSE_ID=3 -> AND A.SCORE>B.SCORE -> AND A.STUDENT_ID=S.ID; +------+--------+-------+-------+ | id | name | age | sex | |------+--------+-------+-------| | 2 | s2 | 12 | w | +------+--------+-------+-------+ 1 row in set Time: 0.007s mysql root@127.0.0.1:nt> SHOW PROFILES +------------+------------+---------------+ | Query_ID | Duration | Query | |------------+------------+---------------| | 1 | 4.5e-05 | SHOW WARNINGS | | 2 | 0.000603 | SELECT S.* FROM (SELECT SC1.STUDENT_ID,SC1.COURSE_ID,SC1.SCORE FROM score SC1) A, (SELECT SC2.STUDENT_ID,SC2.COURSE_ID,SC2.SCORE FROM score SC2) B, student S WHERE A.STUDENT_ID=B.STUDENT_ID AND A.COURSE_ID=1 AND B.COURSE_ID=3 AND A.SCORE>B.SCORE AND A.STUDENT_ID=S.ID | +------------+------------+---------------+ 2 rows in set Time: 0.002s mysql root@127.0.0.1:nt> SHOW PROFILE FOR QUERY 2 +----------------------+------------+ | Status | Duration | |----------------------+------------| | starting | 0.000134 | | checking permissions | 1.1e-05 | | checking permissions | 4e-06 | | checking permissions | 7e-06 | | Opening tables | 2.4e-05 | | init | 5.2e-05 | | System lock | 1.1e-05 | | optimizing | 1.5e-05 | | statistics | 0.000161 | | preparing | 2.7e-05 | | executing | 4e-06 | | Sending data | 6.4e-05 | | end | 6e-06 | | query end | 7e-06 | | closing tables | 8e-06 | | freeing items | 5.4e-05 | | cleaning up | 1.4e-05 | +----------------------+------------+ 17 rows in set Time: 0.005s 로그인 후 복사 上面的结果太丑 mysql root@127.0.0.1:nt> set @query_id=2 Query OK, 0 rows affected Time: 0.001s 로그인 후 복사 使用下面的SQL: SELECT STATE, SUM(DURATION) AS TOTAL_R, ROUND(100 * SUM(DURATION)/(SELECT SUM(DURATION) FROM information_schema.PROFILING WHERE QUERY_ID=@query_id), 2 ) AS PCT_R, COUNT(*) CALLS, SUM(DURATION)/COUNT(*) AS "R/CALL" FROM information_schema.PROFILING WHERE QUERY_ID=@query_id GROUP BY STATE ORDER BY TOTAL_R DESC; 로그인 후 복사 mycli执行上面的sql: +----------------------+-----------+---------+---------+------------+ | STATE | TOTAL_R | PCT_R | CALLS | R/CALL | |----------------------+-----------+---------+---------+------------| | statistics | 0.000161 | 26.7 | 1 | 0.000161 | | starting | 0.000134 | 22.22 | 1 | 0.000134 | | Sending data | 6.4e-05 | 10.61 | 1 | 6.4e-05 | | freeing items | 5.4e-05 | 8.96 | 1 | 5.4e-05 | | init | 5.2e-05 | 8.62 | 1 | 5.2e-05 | | preparing | 2.7e-05 | 4.48 | 1 | 2.7e-05 | | Opening tables | 2.4e-05 | 3.98 | 1 | 2.4e-05 | | checking permissions | 2.2e-05 | 3.65 | 3 | 7.3333e-06 | | optimizing | 1.5e-05 | 2.49 | 1 | 1.5e-05 | | cleaning up | 1.4e-05 | 2.32 | 1 | 1.4e-05 | | System lock | 1.1e-05 | 1.82 | 1 | 1.1e-05 | | closing tables | 8e-06 | 1.33 | 1 | 8e-06 | | query end | 7e-06 | 1.16 | 1 | 7e-06 | | end | 6e-06 | 1 | 1 | 6e-06 | | executing | 4e-06 | 0.66 | 1 | 4e-06 | +----------------------+-----------+---------+---------+------------+ 15 rows in set Time: 0.018s 로그인 후 복사 可以看出来,时间消耗占比最高依次:
对于最终状态,可能会发生以下操作:
下面看看记录2对应的CPU信息 mysql root@127.0.0.1:nt> SHOW PROFILE CPU FOR QUERY 2 +----------------------+------------+------------+--------------+ | Status | Duration | CPU_user | CPU_system | |----------------------+------------+------------+--------------| | starting | 0.000134 | 0.000126 | 8e-06 | | checking permissions | 1.1e-05 | 4e-06 | 6e-06 | | checking permissions | 4e-06 | 2e-06 | 3e-06 | | checking permissions | 7e-06 | 4e-06 | 2e-06 | | Opening tables | 2.4e-05 | 2.3e-05 | 2e-06 | | init | 5.2e-05 | 4.8e-05 | 3e-06 | | System lock | 1.1e-05 | 8e-06 | 2e-06 | | optimizing | 1.5e-05 | 1.4e-05 | 2e-06 | | statistics | 0.000161 | 0.000113 | 5.3e-05 | | preparing | 2.7e-05 | 1.9e-05 | 3e-06 | | executing | 4e-06 | 2e-06 | 3e-06 | | Sending data | 6.4e-05 | 6.3e-05 | 1e-06 | | end | 6e-06 | 3e-06 | 3e-06 | | query end | 7e-06 | 5e-06 | 1e-06 | | closing tables | 8e-06 | 7e-06 | 1e-06 | | freeing items | 5.4e-05 | 1.3e-05 | 4.2e-05 | | cleaning up | 1.4e-05 | 1.2e-05 | 2e-06 | +----------------------+------------+------------+--------------+ 17 rows in set Time: 0.009s 로그인 후 복사 Qs:为什么show profiles结果中的duration和直接执行的时间差距那么大? |
위 내용은 INFORMATION_SCHEMA.프로파일링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

이 기사에서는 Drop Table 문을 사용하여 MySQL에서 테이블을 떨어 뜨리는 것에 대해 설명하여 예방 조치와 위험을 강조합니다. 백업 없이는 행동이 돌이킬 수 없으며 복구 방법 및 잠재적 생산 환경 위험을 상세하게합니다.

InnoDB의 전체 텍스트 검색 기능은 매우 강력하여 데이터베이스 쿼리 효율성과 대량의 텍스트 데이터를 처리 할 수있는 능력을 크게 향상시킬 수 있습니다. 1) InnoDB는 기본 및 고급 검색 쿼리를 지원하는 역 색인화를 통해 전체 텍스트 검색을 구현합니다. 2) 매치 및 키워드를 사용하여 검색, 부울 모드 및 문구 검색을 지원합니다. 3) 최적화 방법에는 워드 세분화 기술 사용, 인덱스의 주기적 재건 및 캐시 크기 조정, 성능과 정확도를 향상시키는 것이 포함됩니다.

기사는 외국 열쇠를 사용하여 데이터베이스의 관계를 나타내고 모범 사례, 데이터 무결성 및 피할 수있는 일반적인 함정에 중점을 둡니다.

이 기사에서는 PostgreSQL, MySQL 및 MongoDB와 같은 다양한 데이터베이스에서 JSON 열에서 인덱스를 작성하여 쿼리 성능을 향상시킵니다. 특정 JSON 경로를 인덱싱하는 구문 및 이점을 설명하고 지원되는 데이터베이스 시스템을 나열합니다.
