MySQL은 성능에 중점을 두고 관련 분석 명령어에 대한 자세한 설명을 제공합니다.
1. MySQL 성능 모니터링 문제
QPS(초당 쿼리 수): 여기서 QPS는 실제로 초당 MySQL 서버에서 실행되는 총 쿼리 수를 나타냅니다.
QPS = 쿼리 / 초
TPS(초당 트랜잭션): MySQL 서버에는 직접 트랜잭션 카운터가 없으며 롤백 및 커밋 카운터를 통해서만 시스템의 트랜잭션 볼륨을 계산할 수 있습니다. 따라서 다음과 같은 방법으로 클라이언트 애플리케이션에서 요청한 TPS 값을 가져와야 합니다.
TPS = (Com_commit + Com_rollback) / 초
키 버퍼 적중률: 키 버퍼 적중률은 MyISAM 유형 테이블에 있는 인덱스의 캐시 적중률을 나타냅니다. 이 적중률의 크기는 MyISAM 유형 테이블의 읽기 및 쓰기 성능에 직접적인 영향을 미칩니다. 키 버퍼 적중률
에는 실제로 읽기 적중률과 쓰기 적중률이 포함됩니다. 이 두 적중률의 값은 MySQL에서 직접 제공되지 않지만 다음과 같이 계산할 수 있습니다.
key_buffer_read_hits = ( 1 - Key_reads / Key_read_requests) * 100%
key_buffer_write_hits= (1 - Key_writes / Key_write_requests) * 100%
Innodb 버퍼 적중률: 여기서 Innodb 버퍼는 innodb_buffer_pool, 즉 메모리를 나타냅니다. Innodb 유형 테이블의 데이터 및 인덱스를 캐시하는 데 사용되는 공간입니다. 키 버퍼와 마찬가지로
MySQL 서버에서 제공하는 해당 상태 값을 기반으로 적중률을 계산할 수도 있습니다.
innodb_buffer_read_hits=(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100%
쿼리 캐시 적중률: 쿼리 캐시를 사용하는 경우 쿼리 캐시를 올바르게 사용하고 있는지 여부를 알 수 있으므로 쿼리 캐시 적중률도 모니터링해야 합니다.
쿼리 캐시 적중률은 다음과 같이 계산됩니다.
Query_cache_hits= (Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100%
테이블 캐시 상태: 테이블 캐시의 현재 상태는 시스템 매개변수 table_open_cache의 설정이 합리적인지 판단하는 데 도움이 될 수 있습니다. 상태 변수 Open_tables와 Opened_tables 간의 비율이 너무 낮다면 테이블 캐시 설정이 너무 작다는 의미입니다.
SHOW STATUS LIKE 'Open%';
스레드 캐시 적중률: 스레드 캐시 적중률 rate는 직접 반영될 수 있습니다. 시스템 매개변수 thread_cache_size가 적절하게 설정되었는지 확인하세요. 합리적인 thread_cache_size 매개변수는
새로운 연결을 생성하는 데 필요한 많은 리소스를 절약할 수 있습니다.
스레드 캐시 적중률은 다음과 같이 계산됩니다.
Thread_cache_hits = (1 - Threads_created / Connections) * 100%
잠금 상태: 잠금 상태에는 테이블 잠금과 행 잠금이 포함됩니다. 상태 변수에는 잠금을 획득한 총 횟수, 잠금으로 인해 다른 스레드가 대기하게 된 횟수 및 잠금 대기 시간 정보가 포함됩니다.
SHOW STATUS LIKE '%lock%';
잠금 관련 시스템 변수를 통해 기존의 다른 스레드가 대기 중인 횟수를 포함하여 테이블 잠금의 총 횟수를 얻을 수 있습니다. 동시에 총 행 잠금 수, 총 행 잠금 시간, 각 행 잠금에 대한 대기 시간, 행 잠금으로 인한 최대 대기 시간 및 행 잠금 수와 같은 매우 자세한 행 잠금 정보도 얻을 수 있습니다. 현재 행 잠금을 기다리고 있는 스레드 수입니다. 이러한 수량을 모니터링함으로써 전체 시스템 잠금이 심각한지 여부를 명확하게 이해할 수 있습니다. Table_locks_waited 대 Table_locks_immediate의 비율이 크다면 테이블 잠금으로 인한 차단이 심각하다는 의미이므로 쿼리 문을 조정해야 하거나 스토리지 엔진을 변경해야 하거나 비즈니스 로직을 변경해야 할 수도 있습니다. 조정. 물론 구체적인 개선방안은 실제 시나리오를 토대로 판단해야 한다. Innodb_row_lock_waits가 더 크다면 Innodb의 행 잠금도 심각하여 다른 스레드의 정상적인 처리에 영향을 미친다는 의미입니다. 원인도 찾아서 해결해야 합니다. 심각한 Innodb 행 잠금의 원인은 쿼리 문에서 사용하는 인덱스가 충분히 합리적이지 않아(Innodb 행 잠금은 인덱스를 기반으로 잠김) 간격 잠금이 너무 커지기 때문일 수 있습니다. 또한 시스템 자체의 처리 능력이 제한되어 있을 수 있으므로 다른 측면(예: 하드웨어 장치)을 고려해야 합니다.
복제 지연: 복제 지연은 슬레이브 데이터베이스가 일관되지 않은 상태에 있는 시간에 직접적인 영향을 미칩니다.
Slave 노드에서 "SHOW SLAVE STATUS" 명령을 실행하여 Seconds_Behind_Master 항목의 값을 얻어 현재 슬레이브의 지연 시간(단위: 초)을 파악합니다.
Tmp 테이블 상태: Tmp 테이블 상태는 MySQL이 임시 테이블을 너무 많이 사용하는지, 임시 테이블이 너무 커서 메모리에서 디스크 파일로 스왑 아웃해야 하는지 여부를 모니터링하는 데 주로 사용됩니다. 임시 테이블 사용 현황 정보는 다음과 같은 방법으로 얻을 수 있습니다:
SHOW STATUS LIKE 'Created_tmp%';
+--------- -- -+-------+
| 변수_이름 |
+------------+ -- -----+
| Created_tmp_disk_tables | 0 |
| Created_tmp_tables |
+--------- -- -+---------+
Created_tmp_tables가 매우 큰 경우 시스템에 정렬 작업이 너무 많거나 테이블 연결 방법이 최적화되지 않은 것일 수 있습니다. 그리고 Created_tmp_disk_tables와 Created_tmp_tables의 비율이 너무 높은 경우(예: 10% 이상) tmp_table_size 시스템 매개변수가 충분히 크게 설정되었는지 고려해야 합니다.
Binlog Cache 사용 상태: Binlog Cache는 디스크에 기록되지 않은 Binlog 정보를 저장하는 데 사용됩니다.
관련 상태 변수는 다음과 같습니다.
SHOW STATUS LIKE 'Binlog_cache%';
Binlog_cache_disk_use 값이 0이 아닌 경우 Binlog 캐시 크기가 충분하지 않을 수 있으며, binlog_cache_size 시스템 매개변수 크기 증가할 수 있습니다.
Innodb_log_waits 수량: Innodb_log_waits 상태 변수는 Innodb 로그 버퍼의 공간 부족으로 인한 대기 횟수를 직접 반영합니다.
SHOW STATUS LIKE 'Innodb_log_waits';
이 변수 값의 발생 빈도는 시스템의 쓰기 성능에 직접적인 영향을 미치므로 해당 값이 초당 1회에 도달할 때 시스템 매개변수 innodb_log_buffer_size의 값은 다음과 같아야 합니다. 결국 시스템에서 공유하는 캐시는 적절하게 늘리면 메모리 부족 문제가 발생하지 않습니다.
2. 성능 분석 명령어 상세 설명
SHOW STATUS;
FLUSH STATUS;
현재 연결 수 보기SHOW STATUS LIKE 'Thread_%';
Thread_cached: 캐시된 스레드 수
Thread_running: 활성 스레드 수 thread
Thread_connected: 현재 연결된 스레드 수
Thread_created: 생성된 총 스레드 수
스레드 캐시 적중
Thread_connected = SHOW GLOBAL STATUS LIKE Thread_created; STATUS LIKE 'Connections';
TCH=(1 - (Threads_created / Connections)) * 100
활성 연결 콘텐츠 보기
SHOW PROCESSLIST;
TCH 번호가 더 작은 경우 90% 이상인 경우 연결을 생성하는 데 시간이 걸립니다. Thread_cached 수를 늘리십시오.
QPS(초당 쿼리 처리) MyISAM 엔진
질문 = '질문'과 같은 전역 상태 표시; >Uptime = 'Uptime'과 같은 전역 상태 표시;
QPS=질문/가동 시간
TPS(초당 전송된 트랜잭션 수), 즉 초당 서버에서 처리하는 트랜잭션 수인 경우 InnoDB가 표시되지만 InnoDB가 없으면 표시되지 않습니다.
Com_commit = 'Com_commit'과 같은 글로벌 상태 표시;
Com_rollback = 'Com_rollback'과 같은 글로벌 상태 표시;
Uptime = 'Uptime'과 같은 글로벌 상태 표시;
TPS=(Com_commit + Com_rollback)/Uptime
QPS 및 TPS 값을 실시간으로 모니터링해야 합니다. 아키텍처 구축 중에 테스트 피크에 가까워지면 신이 함께 하시길
읽기/쓰기 비율
Qcache_hits = 'Qcache_hits'와 같은 글로벌 상태 표시;
Com_select = 'Com_select'와 같은 글로벌 상태 표시;
Com_insert = 'Com_insert'와 같은 글로벌 상태 표시;
Com_update = 'Com_update와 같은 글로벌 상태 표시 ';
Com_delete = 'Com_delete'와 같은 전역 상태 표시;
Com_replace = 'Com_replace'와 같은 전역 상태 표시;
R/W=(Com_select + Qcache_hits) / (Com_insert + Com_update + Com_delete + Com_replace) * 100
읽기-쓰기 비율은 데이터베이스 최적화의 중요한 기반입니다. 많이 읽으면 읽기를 최적화하고, 많이 쓰면 쓰기를 최적화
분당 쿼리가 느립니다
. Slow_queries = 'Slow_queries'와 같은 전역 상태 표시;
Uptime = 'Uptime'과 같은 전역 상태 표시;
SQPM=Slow_queries / (Uptime/60)
느린 쿼리/질문 비율
Slow_queries = 'Slow_queries'와 같은 전역 상태 표시;
Questions = 'Questions'과 같은 전역 상태 표시;
S/Q=Slow_queries/Questions
새 버전이 출시되면 느린 쿼리에 집중하세요
분당 Full_join
Select_full_join = 'Select_full_join'과 같은 글로벌 상태 표시;
Uptime = 'Uptime'과 같은 글로벌 상태 표시;
FJPM=Select_full_join / (Uptime/60)
인덱스를 사용하지 않아 발생한 full_join, 인덱스 최적화 진행
Innodb 버퍼 읽기 적중
Innodb_buffer_pool_reads = SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_reads';
Innodb_buffer_pool_read_requests = SHOW GLOBAL STATUS LIKE 'Innodb_buffer_ pool_read_requests' ;
IFRH=(1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100
InnoDB 버퍼 적중률 목표 95%-99%;
테이블 캐시
Open_tables= SHOW GLOBAL STATUS LIKE ' Open_tables';
Opened_tables= 'Opened_tables'와 같은 전역 상태 표시;
table_cache= 'table_cache'와 같은 전역 상태 표시;
table_cache는 Open_tables보다 크고 Opened_tables보다 작아야 합니다
임시 테이블 대 디스크 비율
Created_tmp_tables = 'Created_tmp_tables'와 같은 전역 상태 표시;
TDR=(Created_tmp_disk_tables/Created_tmp_tables)* 100
'Innodb_row_lock_%'와 같은 전역 상태 표시;
Innodb_row_lock_current_waits
현재 대기 중인 행 잠금 수입니다. MySQL 5.0에 추가되었습니다.
Innodb_row_lock_time
MySQL 5.0.3에 추가되었습니다. .
Innodb_row_lock_time_avg
행 잠금을 획득하는 데 걸리는 평균 시간(밀리초)입니다. MySQL 5.0.3에 추가되었습니다.
Innodb_row_lock_time_max
밀리초 단위로 행 잠금을 획득합니다.
Innodb_row_lock_waits
MySQL 5.0.3에 추가된 행 잠금 횟수입니다.

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

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

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

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

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

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

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

데이터베이스에 연결할 때의 일반적인 오류 및 솔루션 : 사용자 이름 또는 비밀번호 (오류 1045) 방화벽 차단 연결 (오류 2003) 연결 시간 초과 (오류 10060) 소켓 연결 (오류 1042) SSL 연결 오류 (오류 10055) 너무 많은 연결 시도가 차단되는 경우 (오류 1049) 데이터베이스에 연결되지 않음 (오류 1049) 데이터베이스에 연결되지 않습니다 (오류 1049).
