当前位置:首页 > 编程技术 > MySql > 正文内容

MySql-CPU过高处理-开启MySQL慢查询日志

曾经2年前 (2022-05-05)MySql774

开启MySQL慢查询日志
sudo nano /etc/mysql/my.cnf
log_slow_queries = /var/log/mysql/slow.sql
long_query_time = 0.5
log-queries-not-using-indexes #不使用索引,这句可以不用
sudo service mysql restart
show variables like "%slow%"; 查看慢查询相关配置
SELECT SLEEP(1); 执行一个1秒的查询,上面定义了超过0.5秒的查询是慢查询,所以应该可以在慢查询日志里看到这条查询.
show global status like '%slow%'; 查看一共执行了多少次慢查询,上面执行了1次,这里会增加1.
mysqldumpslow /var/log/mysql/slow.sql > slow.sql
mysqldumpslow -a -s r -t 5 /var/log/mysql/slow.sql > slow.sql 返回最多行数(row)的前(top)5个查询.
mysqldumpslow -a -s c -t 5 /var/log/mysql/slow.sql > slow.sql 按计数(count)顺序返回前(top)5个查询.
日志的命名要注意/etc/logrotate.d/mysql-server的设置,否则可能影响logrotate对日志的归档.

MySQL query cache : 自动缓存SQL查询的结果,被缓存的SQL查询可以被反复地快速执行.
cat /etc/mysql/my.cnf |grep query_cache
mysql -uroot -p -e "show variables" |grep query_cache
show variables like "%query_cache%";
写操作频繁,表经常变化,query cache就会经常被刷新(flush),这时MySQL性能反而会下降.
所以说query cache有利有弊,应视情况合理实用.

MySQL5.6 表定义信息缓存和打开表的缓存数量默认值:
(你的这两个值都偏小)
table_definition_cache    1400
table_open_cache    2000

table_definition_cache 最小值可以设为400,此时mysqld内存占用为70MB,performance_schema_max_table_instances的值为445.
table_definition_cache 默认值为1400,计算公式为400+(table_open_cache/2),此时mysqld内存占用为430MB左右.

table_definition_cache是表定义信息缓存,用来存放表定义信息.当我们的MySQL中使用了较多的表的时候,此缓存无疑会提高对表定义信息的访问效率.
注意,这里设置的是可以缓存的表定义信息的数目,而不是内存空间的大小.

table_open_cache是打开表的缓存数量,不是定义内存的大小,而是定义可以缓存多少打开的表的文件句柄信息.
如果定义的太小,那么MySQL在需要打开新表的时候就要不断的关闭已经打开的表和打开此次需要打开的表,性能会受到影响.

查看size和cache相关值:

mysql -uroot -p -e "show variables like '%size%'"
mysql -uroot -p -e "show variables like '%cache%'"


扫描二维码推送至手机访问。

版权声明:本文由珍惜发布,如需转载请注明出处。

本文链接:https://www.zp68.com/article/16.html

分享给朋友:

“MySql-CPU过高处理-开启MySQL慢查询日志” 的相关文章

Mysql 如何开启事件计划和查看开启状态

1、查询mysql的事件计划是否开启:SHOW VARIABLES LIKE 'event_scheduler';OFF 关闭 ON 开启2、开启事件计划开启event_scheduler 的指令,下面任何一个命令都可以SET GLOBAL event_scheduler = ON;...

查看 Mysql 数据库的执行记录

问题有时想要查看不同终端或者web端执行的数据库查询。在学习 sql注入 的时候可以通过数据库执行记录查看真正注入的sql语句。方法开启数据库的日志模式,通过日志查看历史执行记录开启&关闭日志模式(可选择输出到表或文件中)SET GLOBAL log_output&nbs...

MYSQL数据类型介绍

一、MySQL的数据类型主要包括以下五大类:整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT浮点数类型:FLOAT、DOUBLE、DECIMAL字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT...

mysql中between的用法

between的介绍日常sql查询过程中经常要筛选某个属性或某个表达式结果的某个范围内的数据,这个时候我们经常通过 > 或者 < 来进行筛选,有的时候再项目中由于 > 和 < 经常会和起始标志符冲突,所以需要进行转义,这个过程很容易出现一些问题,其实在sql的关键字中,有一个...

MySQL BETWEEN 用法与实例

MySQL BETWEEN 用法与实例本文介绍了在 MySQL 数据库中,如何使用 BETWEEN 运算符确定一个值是否介于某两个值之间。BETWEEN 运算符确定一个值是否介于某两个值之间。BETWEEN 运算符常用于比较数字和日期类型的数据。MySQL B...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。