# 慢查询
慢查询是指那些执行时间超过特定阈值的SQL查询语句。这个阈值是通过MySQL的配置参数long_query_time来设定的,单位是秒。当某个查询的执行时间超过了这个阈值,MySQL就会将这个查询记录到慢查询日志中。
常规的 my.cnf
配置内容如下:
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = /www/server/data
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 100G
table_open_cache = 512
sort_buffer_size = 2M
net_buffer_length = 4K
read_buffer_size = 2M
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 32M
thread_cache_size = 64
query_cache_size = 64M
tmp_table_size = 64M
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
explicit_defaults_for_timestamp = true
#skip-name-resolve
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/www/server/data/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""
innodb_data_home_dir = /www/server/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /www/server/data
innodb_buffer_pool_size = 512M
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 2
innodb_write_io_threads = 2
[mysqldump]
quick
max_allowed_packet = 500M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 2M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
# 慢查询日志的作用
1、识别出执行时间长的查询语句
2、分析查询语句的执行计划,找出性能瓶颈
3、针对性能瓶颈进行优化,如添加索引,优化查询语句结构等。
# 如何开启慢查询日志
# 临时开启
通过 mysql 命令行或者客户端,执行 SQL 命令来开启慢查询日志,并设置相关参数。
set global slow_query_log = 'ON';
# 设置阈值为 2 秒
set global long_query_time = 2;
# 设置慢查询日志文件的路径
set global slow_query_log_file = '/path/to/your/slow-query.log';
# 永久开启
修改 mysql 的配置文件 /etx/my.cnf
,在[mysqld]
部分添加或修改相关配置选项,然后重启mysql服务。
[mysqld]
slow_query_log=1
slow-query-log-file=/path/to/your/slow-query.log
long_query_time=2
← 最左前缀原则