Java小强个人技术博客站点    手机版
当前位置: 首页 >> DB >> MySQL / Mariadb配置慢查询

MySQL / Mariadb配置慢查询

23890 DB | 2021-4-15

什么是MariaDB

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。

MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。

从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。

崔素强博客使用


Mariadb下载

https://downloads.mariadb.org/ 


MariaDB的慢查询,全名是慢查询日志,是MariaDB提供的一种日志记录,用来记录在MariaDB中响应时间超过阀值的语句。

具体环境中,运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。

long_query_time的默认值为10,意思是记录运行10秒以上的语句。

默认情况下,MariaDB数据库并不启动慢查询日志,需要手动来设置这个参数。

当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。

慢查询日志支持将日志记录写入文件和数据库表。


查看一下mariadb是否开启慢查询:

show variables like 'slow_query%';


查看慢查询时间设置为多少秒:

show variables like 'long_query_%';


设置配置文件my.ini:

[mysqld]
datadir=C:/Program Files/MariaDB 10.4/data
port=3306
innodb_buffer_pool_size=1013M
feedback=ON
character-set-server=utf8

slow_query_log = 1
slow_query_log_file = C:\Program Files\MariaDB 10.4\data\mysql_slow.log
long_query_time = 1

[client]
port=3306
plugin-dir=C:/Program Files/MariaDB 10.4/lib/plugin

配置后重启服务


测试慢查询

select sleep(2);


查看mysql_slow.log日志

C:\Program Files\MariaDB 10.4\bin\mysqld.exe, Version: 10.4.18-MariaDB-log (mariadb.org binary distribution). started with:
TCP Port: 3306, Named Pipe: (null)
Time		    Id Command	Argument
# Time: 210415 11:38:34
# User@Host: root[root] @ localhost [127.0.0.1]
# Thread_id: 9  Schema: test  QC_hit: No
# Query_time: 2.000180  Lock_time: 0.000000  Rows_sent: 1  Rows_examined: 0
# Rows_affected: 0  Bytes_sent: 63
use test;
SET timestamp=1618457914;
select sleep(2);


log_output

log_output参数指定日志的存储方式。

log_output='FILE'表示将日志存入文件,默认值也是'FILE'。

log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。

同时也支持两种日志存储方式,配置的时候以逗号隔开即可,如:log_output='FILE,TABLE'。

日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源。

因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。

--查看当前输出方式,默认FILE
show variables like '%log_output%';
--设置为写入表中
set global log_output='TABLE';
--查看是否设置成功
show variables like '%log_output%';
--测试慢查询
select sleep(5) ;
--查看记录表
select * from mysql.slow_log;


log-queries-not-using-indexes

该系统变量指定未使用索引的查询也被记录到慢查询日志中(可选项)。

如果调优的话,建议开启这个选项。

另外,开启了这个参数,其实使用full index scan的SQL也会被记录到慢查询日志。

--是否开启
show variables like 'log_queries_not_using_indexes';
--设置为开启
set global log_queries_not_using_indexes=1;


log_slow_admin_statements

这个系统变量表示,是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志。


推荐您阅读更多有关于“ mysql 数据库 Mariadb 慢查询 ”的文章

上一篇:Windows下安装使用mysqldumpslow 下一篇:Discuz2.5升级到3.4说明

猜你喜欢

发表评论: