집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 느린 쿼리 작업의 코드 요약
다음 편집기는 Mysql느린쿼리 작업에 대한 요약을 제공합니다. 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 에디터를 따라가며 살펴보자
Mysql 느린 쿼리 설명
MySQL의 느린 쿼리 로그는 MySQL Logging에서 제공하는 타입이다. 는 MySQL에서 응답 시간이 임계값을 초과하는 명령문을 기록하는 데 사용되며, 구체적으로는 실행 시간이 long_query_time 값을 초과하는 SQL을 의미하며 이는 느린 쿼리 로그에 기록됩니다. long_query_time의 기본값은 10이며, 이는 10S 이상 동안 명령문을 실행한다는 의미입니다. 기본적으로 Mysql 데이터베이스는 느린 쿼리 로그를 시작하지 않습니다. 물론 이 매개변수를 수동으로 설정해야 합니다. 튜닝에 필요하지 않은 경우 일반적으로 이 매개변수를 시작하지 않는 것이 좋습니다. 느린 쿼리 로그는 어느 정도 성능에 영향을 미치게 됩니다. 느린 쿼리 로그는 파일에 로그 레코드 쓰기를 지원하고 데이터베이스 테이블에 로그 레코드 쓰기도 지원합니다. 느린 쿼리 로그는 너무 느린 일부 쿼리 문을 기록하는 데 사용되며 이는 관리자가 로그 기본값을 분석하는 데 도움이 될 수 있습니다. 활성화하려면 구성 파일 에 일련의 매개변수를 추가하여
Mysql 느린 쿼리를 켜는 이유
공동 쿼리일 수 있으므로 이러한 명령문을 찾아야 합니다. 이유를 분석하고 최적화합니다. 이것이 이 블로그 글을 올리는 이유이기도 합니다
mysql 느린 쿼리 방법 활성화
1) 방법 1, mysql 데이터베이스 터미널에 로그인하고
mysql> show variables like "%long%"; <SPAN style="COLOR: #ff00ff"> //查看一下默认为慢查询的时间10秒 </SPAN> +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec) mysql> set global long_query_time=1; <SPAN style="COLOR: #ff00ff">//设置成1秒,加上global,下次进mysql已然生效</SPAN> Query OK, 0 rows affected (0.00 sec) mysql> show variables like "%slow%"; <SPAN style="COLOR: #ff00ff"> //查看一下慢查询是不是已经开启 </SPAN> +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /usr/local/mysql/mysql-slow.log | +---------------------+---------------------------------+ 4 rows in set (0.00 sec) mysql> set slow_query_log='ON'; <SPAN style="COLOR: #ff00ff"> //加上global,不然会报错的</SPAN> ERROR 1229 (HY000): Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL mysql> set global slow_query_log='ON'; <SPAN style="COLOR: #ff00ff">//这个参数设置为ON,表示启用慢查询,可以捕获执行时间超过一定数值的SQL语句。</SPAN> Query OK, 0 rows affected (0.28 sec) mysql> show variables like "%slow%"; <SPAN style="COLOR: #ff00ff">//查看是否已经开启 </SPAN> +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/mysql-slow.log | +---------------------+---------------------------------+ 4 rows in set (0.00 sec)
를 엽니다. 방법 2. mysql 구성 파일 my.cnf
[root@www ~]# vim /etc/mysql.cnf
......
slow_query_log = 1 //开启慢查询日志,将1改为ON也可以 long_query_time = 1 //mysql慢查询时间,指定达到多少秒才算慢查询;这里推荐设置超过1秒的执行语句就会被记录到慢查询日志中 slow_query_log_file= /var/lib/mysql/mysql-slow.log //慢查询日志路径。这里slow_query_log_file修改为log-slow-queries 也可以 //主要是上面三行内容,还可以添加下面几行细节性配置 long-queries-not-using-indexes //记录没有使用索引的查询语句 min_examined_row_limit = 1000 //记录查找了多达1000次而引起的慢查询 log-slow-admin-statements //记录ALTER TABLE等语句引发的慢查询 log-slow-slave-statements //记录从服务器产生的慢查询
분석 도구
분석 도구는 실제로 mysql에 기록된 데이터를 분석한다- Slow.log 한 번에 표시됩니다(실제로 쉘 스크립트를 직접 작성하여 필요한 정보를 얻을 수도 있습니다).
[root@www ~]# cat mysql-slow.log ~
/usr/local/mysql/libexec/mysqld, Version: 5.1.26-rc-log (Source distribution). started with: Tcp port: 3306 Unix socket: /tmp/mysql.sock Time Id Command Argument # Time: 100814 13:28:30 # User@Host: root[root] @ localhost [] # Query_time: 10.096500 Lock_time: 0.045791 Rows_sent: 1 Rows_examined: 2374192 SET timestamp=1281763710; select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15); # Time: 100814 13:37:02 # User@Host: root[root] @ localhost [] # Query_time: 10.394134 Lock_time: 0.000091 Rows_sent: 1 Rows_examined: 2374192 SET timestamp=1281764222; select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15); # Time: 100814 13:37:16 # User@Host: root[root] @ localhost [] # Query_time: 4.608920 Lock_time: 0.000078 Rows_sent: 1 Rows_examined: 1260544 SET timestamp=1281764236; select count(*) as cou from ad_visit_history where ad_code in (select ad_code from ad_list where id=41) order by id desc;
Option h requires an argument ERROR: bad option Usage: mysqldumpslow [ OPTS... ] [ LOGS... ] Parse and summarize the MySQL slow query log. Options are --verbose verbose --debug debug --help write this text to standard output -v verbose -d debug //查错 -s ORDER what to sort by (t, at, l, al, r, ar etc), 'at' is default //排序方式query次数,时间,lock的时间和返回的记录数来排序 -r reverse the sort order (largest last instead of first) //倒排序 -t NUM just show the top n queries //显示前N多个 -a don't abstract all numbers to N and strings to 'S' -n NUM abstract numbers with at least n digits within names //抽象的数字,至 少有n位内的名称 -g PATTERN grep: only consider stmts that include this string //配置模式 -h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard), //mysql所以机器名或者IP default is '*', i.e. match all -i NAME name of server instance (if using mysql.server startup script) -l don't subtract lock time from total time //总时间中不减去锁定时间
위 내용은 MySQL 느린 쿼리 작업의 코드 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!