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();
        }
    }
}
相关推荐
cui_ruicheng33 分钟前
MySQL(四):数据类型与字段设计
数据库·mysql
皮皮学姐分享-ppx1 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
闪电悠米3 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
DIY源码阁4 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
浪客灿心5 小时前
项目篇:模块设计与实现
数据库·c++
流星白龙6 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
三十..7 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶7 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
用户3074596982077 小时前
EXPLAIN 执行计划 完全精通指南
mysql
努力努力再努力wz7 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表