


| SHOW [GLOBAL|SESSION] STATUS LIKE |
| |
| Connections:连接MySQL服务器的次数。 |
| Uptime:MySQL服务器的上线时间。 |
| Slow_queries:慢查询的次数。 |
| Innodb_rows_read:Select查询返回的行数 |
| Innodb_rows_inserted:执行INSERT操作插入的行数 |
| Innodb_rows_updated:执行UPDATE操作更新的行数 |
| Innodb_rows_deleted:执行DELETE操作删除的行数 |
| Com_select:查询操作的次数。 |
| Com_insert:插入操作的次数。对于批量插入的INSERT操作,只累加一次。 |
| Com_update:更新操作的次数。 |
| Com_delete:删除操作的次数。 |
| show status like 'last_query_cost'; |
| |
| # 返回结果为SQL语句所需要读取的页的数量 |
| MySQL的慢查询日志,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。 |
| long_query_time的默认值为10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。 |
| |
| 它的主要作用是,帮助我们发现那些执行时间特别长的SQL查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候, |
| 检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合explain进行全面分析。 |
| |
| 默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定 |
| 的性能影响。 |
| |
| 慢查询日志支持将日志记录写入文件。 |
| #查询慢查询是否已经开启 |
| show variables like '%slow_query_log%'; |
| |
| #修改为开启状态 |
| set global slow_query_log = on |
| |
| #查询阈值 |
| show variables like '%long_query_time%' |
| |
| #修改阈值,全局和本次连接都需要设置 |
| set global long_query_time = 1; |
| set session long_query_time = 1; |
| show global status like '%Slow_queries%'; |
| # 创建表 |
| CREATE TABLE `student` ( |
| `id` INT(11) NOT NULL AUTO_INCREMENT, |
| `stuno` INT NOT NULL , |
| `name` VARCHAR(20) DEFAULT NULL, |
| `age` INT(3) DEFAULT NULL, |
| `classId` INT(11) DEFAULT NULL, |
| PRIMARY KEY (`id`) |
| ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
| |
| # 报错时,设置为允许创建存储函数 |
| set global log_bin_trust_function_creators=1; |
| |
| # 创建存储函数,随机产生字符串 |
| DELIMITER // |
| CREATE FUNCTION rand_string(n INT) |
| RETURNS VARCHAR(255) #该函数会返回一个字符串 |
| BEGIN |
| DECLARE chars_str VARCHAR(100) DEFAULT |
| 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'; |
| DECLARE return_str VARCHAR(255) DEFAULT ''; |
| DECLARE i INT DEFAULT 0; |
| WHILE i < n DO |
| SET return_str =CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1)); |
| SET i = i + 1; |
| END WHILE; |
| RETURN return_str; |
| END // |
| DELIMITER ; |
| |
| #测试 |
| SELECT rand_string(10); |
| |
| # 创建存储函数,生成随机数值 |
| DELIMITER // |
| CREATE FUNCTION rand_num (from_num INT ,to_num INT) RETURNS INT(11) |
| BEGIN |
| DECLARE i INT DEFAULT 0; |
| SET i = FLOOR(from_num +RAND()*(to_num - from_num+1)) ; |
| RETURN i; |
| END // |
| DELIMITER ; |
| |
| # 测试: |
| SELECT rand_num(10,100); |
| |
| # 创建存储过程 |
| DELIMITER // |
| CREATE PROCEDURE insert_stu1( START INT , max_num INT ) |
| BEGIN |
| DECLARE i INT DEFAULT 0; |
| SET autocommit = 0; #设置手动提交事务 |
| REPEAT #循环 |
| SET i = i + 1; #赋值 |
| INSERT INTO student (stuno, NAME ,age ,classId ) VALUES |
| ((START+i),rand_string(6),rand_num(10,100),rand_num(10,1000)); |
| UNTIL i = max_num |
| END REPEAT; |
| COMMIT; #提交事务 |
| END // |
| DELIMITER ; |
| |
| # 调用存储过程,生成数据 |
| CALL insert_stu1(100001,4000000); |
| |
| # 查询表中的数据 |
| SELECT * FROM student WHERE stuno = 3455655; |
| |
| SELECT * FROM student WHERE name = 'oQmLUr'; |
| |
| # 再次查看慢查询数目,有2条 |
| show global status like '%Slow_queries%'; |
-
慢查询日志分析工具:mysqldumpslow
-
查看帮助
| mysqldumpslow --help |
| |
| -a: 不将数字抽象成N,字符串抽象成S |
| -s: 是表示按照何种方式排序: |
| c: 访问次数 |
| l: 锁定时间 |
| r: 返回记录 |
| t: 查询时间 |
| al:平均锁定时间 |
| ar:平均返回记录数 |
| at:平均查询时间 (默认方式) |
| ac:平均查询次数 |
| -t: 即为返回前面多少条的数据; |
| -g: 后边搭配一个正则匹配模式,大小写不敏感的; |
| |
| mysqldumpslow -s t -t 5 /var/lib/mysql/atguigu01-slow.log |
| |
| |
| mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log |
| |
| |
| mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log |
| |
| |
| mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/atguigu-slow.log |
| |
| |
| mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more |
| |
| |
| |
| SHOW VARIABLES LIKE '%slow%'; |
| SHOW VARIABLES LIKE '%long_query_time%'; |
| |
| SET GLOBAL slow_query_log=off; |
| |
| |
| show variables like 'slow_query_log'; |
| |
| |
| |
| |
| mysqladmin -uroot -p flush logs slow |
| # 查看sql执行成本是否开启 |
| show variables like 'profiling'; |
| |
| # 开启 |
| set profiling = 'ON'; |
| |
| # 查看查询语句 |
| show profiles; |
| |
| # 查看开销 |
| show profile; |
| |
| #查看指定sql语句的开销 |
| show profile cpu,block io for query 2; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2021-06-15 MySQL基础(二)