当前位置:   article > 正文

[笔记]MySQL查看事务信息_mysql查询事务

mysql查询事务

我们可以使用 status 获取当前连接的状态:

mysql> status -- 查看当前连接状态
--------------
D:\mysql\bin\mysql.exe  Ver 14.14 Distrib 5.7.36, for Win64 (x86_64) -- 当前连接使用的客户端

Connection id:          3  -- 当前连接id(线程id)
Current database:       test -- 当前连接数据库
Current user:           root@localhost -- 当前连接用户
SSL:                    Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Using delimiter:        ; -- 当前连接分隔符
Server version:         5.7.36-log MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    gbk
Conn.  characterset:    gbk
TCP port:               3306
Uptime:                 2 hours 23 min 1 sec

Threads: 2  Questions: 38  Slow queries: 0  Opens: 121  Flush tables: 1  Open tables: 114  Queries per second avg: 0.004
--------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

Connection id 表示当前会话的连接线程id,当前线程id为 3


除此之外,还可以使用 show processlist 查看当前MySQL 服务器上存在哪些连接:

mysql> show processlist\G
*************************** 1. row ***************************
     Id: 3        -- 当前线程id
   User: root     -- 当前线程登录用户
   Host: localhost:65447 -- 线程登录主机
     db: test     -- 线程使用数据库
Command: Query    -- 当前线程执行命令类型
   Time: 0
  State: starting  -- 当前连接状态
   Info: show processlist  -- 当前连接执行SQL
*************************** 2. row ***************************
     Id: 4
   User: root
   Host: localhost:65431
     db: test
Command: Sleep
   Time: 405
  State:
   Info: NULL
2 rows in set (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

MySQL 会为每个到来的连接新建一个线程


使用SQL可以查看当前都有哪些事务信息:

select * from information_schema.innodb_trx\G
  • 1

示例:

mysql> select * from information_schema.innodb_trx\G
*************************** 1. row ***************************
                    trx_id: 6274333      -- 事务id
                 trx_state: RUNNING      -- 事务状态
               trx_started: 2022-10-10 16:16:05     -- 事务开始时间
     trx_requested_lock_id: NULL       -- 事务请求锁定的 id
          trx_wait_started: NULL       -- 事务是否处于等待状态
                trx_weight: 24637      -- 事务大小
       trx_mysql_thread_id: 4          -- 事务关联的 MySQL 线程id
                 trx_query: NULL
       trx_operation_state: NULL       -- 事务操作状态
         trx_tables_in_use: 0          -- 事务使用的表数量
         trx_tables_locked: 1          -- 事务锁表数量
          trx_lock_structs: 24637      -- 事务锁定结构体
     trx_lock_memory_bytes: 2597072    -- 事务锁定内存大小,单位字节
           trx_rows_locked: 4598010    -- 事务锁定行数
         trx_rows_modified: 0          -- 事务修改行数
   trx_concurrency_tickets: 0
       trx_isolation_level: REPEATABLE READ   -- 当前事务隔离级别
         trx_unique_checks: 1          -- 事务是否进行唯一约束检查
    trx_foreign_key_checks: 1          -- 事务是否进行外键检查
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0          -- 事务自适应哈希锁
 trx_adaptive_hash_timeout: 0
          trx_is_read_only: 0
trx_autocommit_non_locking: 0
1 row in set (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

可以看到当前获取到了一个事务的信息,对应的 trx_mysql_thread_id 表示这个事务所在的连接线程,当前为 4.

使用 start transaction WITH CONSISTENT SNAPSHOT 创建一个事务

使用 BEGIN 并不会立即创建一个事务,此时如果要验证事务我们可以使用START TRANSACTION WITH CONSISTENT SNAPSHOT强制启动一个事务。

mysql> START TRANSACTION WITH CONSISTENT SNAPSHOT;
Query OK, 0 rows affected (0.00 sec)
  • 1
  • 2

查看 binlog 日志

如果 MySQL开启了 binlog,可以使用 MySQL服务器携带的 mysqlbinlog 命令查看binlog日志:

# 后面指定 binlog 文件
mysqlbinlog ./mysql-bin.000001
# 查看指定 binlong 文件
# -vv 表示详细输出 v 越多输出内容越详细
# --start-position 表示输出内容的起始位置
mysqlbinlog -vv data/master.000001 --start-position=8900;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在 mysql 命令行中查看:

-- 查看第一个binlog文件内容
show binlog events;
-- 查看指定 binlog 文件的内容
show binlog events in 'mysql-bin.000002';
-- 查看当前正在写入的 binlog 文件
show master status \G
-- 获取 binlog 文件列表
show binary logs;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

查看存储引擎 InnoDB 状态

可以使用命令查看存储引擎状态,如果数据库最近发生过死锁,该命令可以看到发生死锁时系统的状态。

SHOW ENGINE InnoDB STATUS\G
  • 1

示例

mysql> SHOW ENGINE InnoDB STATUS\G
*************************** 1. row ***************************
  Type: InnoDB -- 引擎类型
  Name:
Status:
=====================================
2022-10-24 10:33:35 0x428c INNODB MONITOR OUTPUT -- 存储引擎监视器输出
=====================================
Per second averages calculated from the last 52 seconds
-----------------
BACKGROUND THREAD    -- 后台线程
-----------------
srv_master_thread loops: 16 srv_active, 0 srv_shutdown, 219547 srv_idle   -- 伺服线程循环状态
srv_master_thread log flush and writes: 219563   -- 伺服线程日志刷盘状态
----------
SEMAPHORES -- 信号量
----------
OS WAIT ARRAY INFO: reservation count 41     -- 系统等待队列
OS WAIT ARRAY INFO: signal count 41
RW-shared spins 0, rounds 40, OS waits 20
RW-excl spins 0, rounds 54, OS waits 1
RW-sx spins 0, rounds 0, OS waits 0
Spin rounds per wait: 40.00 RW-shared, 54.00 RW-excl, 0.00 RW-sx
------------
TRANSACTIONS
------------
Trx id counter 6276938
Purge done for trxs n:o < 6276935 undo n:o < 0 state: running but idle
History list length 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 283738590640792, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 6276935, ACTIVE 903 sec
2 lock struct(s), heap size 1136, 7 row lock(s)
MySQL thread id 5, OS thread handle 5260, query id 87 localhost 127.0.0.1 root
--------
FILE I/O
--------
I/O thread 0 state: wait Windows aio (insert buffer thread)
I/O thread 1 state: wait Windows aio (log thread)
I/O thread 2 state: wait Windows aio (read thread)
I/O thread 3 state: wait Windows aio (read thread)
I/O thread 4 state: wait Windows aio (read thread)
I/O thread 5 state: wait Windows aio (read thread)
I/O thread 6 state: wait Windows aio (write thread)
I/O thread 7 state: wait Windows aio (write thread)
I/O thread 8 state: wait Windows aio (write thread)
I/O thread 9 state: wait Windows aio (write thread)
Pending normal aio reads: [0, 0, 0, 0] , aio writes: [0, 0, 0, 0] ,
 ibuf aio reads:, log i/o_s:, sync i/o_s:
Pending flushes (fsync) log: 0; buffer pool: 0
612 OS file reads, 359 OS file writes, 152 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
 insert 0, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 3153058970
Log flushed up to   3153058970
Pages flushed up to 3153058970
Last checkpoint at  3153058961
0 pending log flushes, 0 pending chkp writes
99 log i/o_s done, 0.00 log i/o_s/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 137297920
Dictionary memory allocated 191079
Buffer pool size   8192    -- 内存中缓存池大小 单位为页
Free buffers       7566    -- 空闲缓存数量
Database pages     626     -- 已缓存数据页数量 8192 = 7566 + 626
Old database pages 248
Modified db pages  0       -- 已修改脏页数量
Pending reads      0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 573, created 53, written 228
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 626, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Process ID=5952, Main thread ID=8412, state: sleeping
Number of rows inserted 27, updated 0, deleted 0, read 203
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================

1 row in set (0.00 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/121861
推荐阅读
相关标签
  

闽ICP备14008679号