mysql 操作慢查询日志

1、mysql 批量插入300w数据

复制代码
CREATE PROCEDURE test_insert_200w()
BEGIN
 DECLARE i INT;
 SET i=1;
 WHILE i<=3000000 DO
 INSERT INTO shop_user (`password`, `telephone`, `username`) VALUES ('admin', '15510304125', concat('admin', i));
 SET i=i+1;
 END WHILE;
END;
//执行sql
call test_insert_200w();

2、慢查询日志的时间

复制代码
-- 设置慢查询日志时间
show variables like 'long_query_time';

-- 是否开启慢查询日志
show variables like 'slow_query%'

-- 慢查询日志路径
show variables like 'slow_query_log_file%';
将 slow_query_log 全局变量设置为"ON"/OFF状态 
set global slow_query_log='ON';
设置慢查询⽇志存放的位置
set global slow_query_log_file='/op/slow.log/';

二、修改时长,查询超过1秒就记录 
set global long_query_time=1;
如何通过set命令无效就有可能my.ini配置文件中已经配置了

设置日志存放的路径
datadir=D:/developmentTool/Mysql-5.7/mysql-data/Data

# The default character set that will be used when a new schema or table is
# created and no character set is defined
# character-set-server=

# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB

# The current server SQL mode, which can be set dynamically.
# Modes affect the SQL syntax MySQL supports and the data validation checks it performs. This 
# makes it easier to use MySQL in different environments and to use MySQL together with other 
# database servers.
sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

# General and Slow logging.
log-output=FILE

general-log=0

general_log_file="PYRX_05.log"

slow-query-log=1

slow_query_log_file="PYRX_05-slow.log"

long_query_time=2

# Error Logging.
log-error="PYRX_05.err"

3、设置慢查询日志存放方式,分为文件和表两种形式

og_output参数是什么意思?表示慢日志输出到文件还是表中。

show global variables like 'log_output';

默认参数,log_output='FILE',表示慢日志输出到了文件中。

set global log_output='TABLE';

此时慢日志就输出到了mysql数据库的系统表中:select * from mysql.slow_log; 可以查看到。

SELECT

start_time,

user_host,

query_time,

lock_time,

rows_sent,

rows_examined,

db,

last_insert_id,

insert_id,

thread_id,

CONVERT (sql_text USING utf8 ) sql_text

FROM

mysql.slow_log

ORDER BY UNIX_TIMESTAMP(start_time) DESC

java 代码读取日志

复制代码
package com.example.rediscache;

import java.sql.*;

public class SlowLogTest {

    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "pyrx123";

        try {
            // 1. 获取数据库连接
            Connection conn = DriverManager.getConnection(url, username, password);

            // 2. 创建一个Statement对象
            Statement stmt = conn.createStatement();
            // 3. 执行SQL查询,获取结果集
            ResultSet rs = stmt.executeQuery("SELECT start_time, CONVERT( sql_text USING utf8) sql_text, user_host, query_time, lock_time," +
                    " rows_sent, rows_examined, db, last_insert_id, insert_id, thread_id FROM mysql.slow_log ORDER BY UNIX_TIMESTAMP( start_time ) DESC");
            // 4. 处理结果集
            while (rs.next()) {
                String start_time = rs.getString("start_time");
                String sql_text = rs.getString("sql_text");
                String user_host = rs.getString("user_host");
                String query_time = rs.getString("query_time");
                String lock_time = rs.getString("lock_time");
                String rows_sent = rs.getString("rows_sent");
                String rows_examined = rs.getString("rows_examined");
                String db = rs.getString("db");
                String last_insert_id = rs.getString("last_insert_id");
                String insert_id = rs.getString("insert_id");
                String thread_id = rs.getString("thread_id");
                // 其他属性...
                System.out.println(
                        "Column start_time: " + start_time
                        + ", Column sql_text: "  + sql_text
                        + ", Column user_host: "+ user_host
                        + ", Column query_time: " + query_time
                        + ", Column lock_time: " + lock_time
                        + ", Column rows_sent: " + rows_sent
                        + ", Column rows_examined: " + rows_examined
                        + ", Column db: " + db
                        + ", Column last_insert_id: " + last_insert_id
                        + ", Column insert_id: " + insert_id
                        + ", Column thread_id: " + thread_id);
            }
            // 5. 关闭连接和Statement对象
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
ClickHouseDB8 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_639906948 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
时间售卖铺9 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw10 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社10 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙11 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain37612 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你021412 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川13 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组13 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制