iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL如何查看当前数据库锁请求
  • 465
分享到

MySQL如何查看当前数据库锁请求

2024-04-02 19:04:59 465人浏览 泡泡鱼
摘要

小编给大家分享一下Mysql如何查看当前数据库锁请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

小编给大家分享一下Mysql如何查看当前数据库请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!


mysql版本:5.6.21

Mysql提供了查看当前数据库锁请求的三种方法:

1. show  full  processlist命令
  
观察state和info列

2. show engine  innodb status\G 命令
  查看 TRANSACTioNS 部分和 LATEST DETECTED DEADLOCK 两个部分

3. infORMation_shcema下的三张表(通过这三张表可以更新监控当前事物并且分析存在的锁问题)
 —— innodb_trx (

打印innodb内核中的当前活跃(ACTIVE)事务


 —— innodb_locks 

( 打印当前状态产生的innodb锁 仅在有锁等待时打印)

 —— innodb_lock_waits

(打印当前状态产生的innodb锁等待 仅在有锁等待时打印)



 1) innodb_trx表结构说明 (摘取最能说明问题的8个字段)

字段名 说明
trx_id innodb存储引擎内部唯一的事物ID
trx_state
当前事物状态(running和lock wait两种状态)
trx_started  
事物的开始时间
trx_requested_lock_id 等待事物的锁ID,如trx_state的状态为Lock wait,那么该值带表当前事物等待之前事物占用资源的ID,若trx_state不是Lock wait 则该值为NULL
trx_wait_started 事物等待的开始时间
trx_weight 事物的权重,在innodb存储引擎中,当发生死锁需要回滚的时,innodb存储引擎会选择该值最小的进行回滚
trx_mysql_thread_id mysql中的线程id, 即show  processlist显示的结果
trx_query  事物运行的SQL语句


 2)innodb_locks表结构说明

字段名 说明
lock_id 
锁的ID
lock_trx_id
事物的ID
lock_mode
锁的模式(S锁与X锁两种模式)
lock_type
锁的类型 表锁还是行锁(RECORD)
lock_table
要加锁的表
lock_index
锁住的索引
lock_space
锁住对象的space id
lock_page 
事物锁定页的数量,若是表锁则该值为NULL
lock_rec
事物锁定行的数量,若是表锁则该值为NULL
lock_data
事物锁定记录主键值,若是表锁则该值为NULL(此选项不可信)


 3)innodb_lock_waits表结构说明

字段名 说明
requesting_trx_id
申请锁资源的事物ID
requested_lock_id
申请的锁的ID
blocking_trx_id
阻塞其他事物的事物ID
blocking_lock_id
阻塞其他锁的锁ID

可以根据这三张表进行联合查询,得到更直观更清晰的结果,可以参考如下SQL(可根据自己的分析习惯适进行调整)

 select
r.trx_isolation_level,
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id  waiting_trx_thread,
r.trx_state  waiting_trx_state,
lr.lock_mode waiting_trx_lock_mode,
lr.lock_type  waiting_trx_lock_type,
lr.lock_table  waiting_trx_lock_table,
lr.lock_index  waiting_trx_lock_index,
r.trx_query  waiting_trx_query,
b.trx_id  blocking_trx_id,
b.trx_mysql_thread_id  blocking_trx_thread,
b.trx_state  blocking_trx_state,
lb.lock_mode blocking_trx_lock_mode,
lb.lock_type  blocking_trx_lock_type,
lb.lock_table  blocking_trx_lock_table,
lb.lock_index  blocking_trx_lock_index,
b.trx_query  blocking_query
from  information_schema.innodb_lock_waits  w 
inner  join  information_schema.innodb_trx b 
on  b.trx_id=w.blocking_trx_id 
inner  join  information_schema.innodb_trx  r
on  r.trx_id=w.requesting_trx_id 
inner  join   information_schema.innodb_locks  lb
on  lb.lock_trx_id=w.blocking_trx_id
inner  join   information_schema.innodb_locks  lr
on  lr.lock_trx_id=w.requesting_trx_id\G;
*************************** 1. row ***************************
    trx_isolation_level: REPEATABLE READ
         waiting_trx_id: 2900247
     waiting_trx_thread: 1070
      waiting_trx_state: LOCK WAIT
  waiting_trx_lock_mode: S
  waiting_trx_lock_type: RECORD
 waiting_trx_lock_table: `jiang_test`.`test`
 waiting_trx_lock_index: PRIMARY
      waiting_trx_query: select * from test where id=3 lock in share mode
        blocking_trx_id: 2900241
    blocking_trx_thread: 1137
     blocking_trx_state: RUNNING
 blocking_trx_lock_mode: X
 blocking_trx_lock_type: RECORD
blocking_trx_lock_table: `jiang_test`.`test`
blocking_trx_lock_index: PRIMARY
         blocking_query: NULL
1 row in set (0.01 sec)

以上是“MySQL如何查看当前数据库锁请求”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL如何查看当前数据库锁请求

本文链接: https://www.lsjlt.com/news/62315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL如何查看当前数据库锁请求
    小编给大家分享一下MySQL如何查看当前数据库锁请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • mysql如何查看当前数据库
    在 MySQL 中,要查看当前正在使用的数据库,可以使用 SELECT DATABASE() 函数 SELECT DATABASE(...
    99+
    2024-05-09
    mysql
  • mysql如何查看当前数据库名称
    要查看当前正在使用的数据库名称,您可以在MySQL命令提示符下执行以下命令: SELECT DATABASE(); 这将返回当前选...
    99+
    2024-04-15
    mysql
  • MySQL怎么查看当前数据库
    本篇内容主要讲解“MySQL怎么查看当前数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL怎么查看当前数据库”吧! MySQL查看当前数据库 (...
    99+
    2024-04-02
  • db2如何查看当前数据库名
    要查看当前数据库的名称及其他相关信息,可以使用以下 SQL 查询语句: SELECT current server...
    99+
    2024-04-02
  • mysql中怎么查看当前数据库
    本篇文章为大家展示了mysql中怎么查看当前数据库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。使用mysql登录后,如何查看当前数据库 1. 通过函数d...
    99+
    2024-04-02
  • MYSQL 查看当前处于哪个数据库。
    一、用select database()语句 select database() ; 结果: 表示当前访问的的是哪个数据库, 或者登录到了哪个数据库   二,用 show tables 语句。 show tables ; 结果: 查询...
    99+
    2023-09-02
    数据库 mysql sql
  • MSSQL如何查看当前数据库的连接数
    要查看当前数据库的连接数,可以使用以下方法之一:1. 使用系统存储过程 `sp_who` 或 `sp_who2`,这些存储过程将列出...
    99+
    2023-09-15
    MSSQL
  • mysql当前连接数如何查看
    可以使用以下命令来查看当前连接数: SHOW STATUS WHERE `variable_name` = 'Th...
    99+
    2024-04-15
    mysql
  • 怎么查看redis当前数据库
    要查看 Redis 当前数据库的内容,可以使用 `SELECT` 命令来切换数据库,然后使用 `KEYS` 命令获取当前数据库中的所...
    99+
    2023-09-11
    redis 数据库
  • 数据库中如何查看当前的活动SQL
    这篇文章主要为大家展示了“数据库中如何查看当前的活动SQL”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中如何查看当前的活动SQL”这篇文章吧。 ...
    99+
    2024-04-02
  • mysql查看数据库和当前用户的命令
    本篇内容介绍了“mysql查看数据库和当前用户的命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SELE...
    99+
    2024-04-02
  • mysql如何查看当前进程
    要查看当前MySQL进程,可以使用以下两种方法: 使用MySQL自带的SHOW PROCESSLIST命令。可以登录到MySQL控...
    99+
    2024-04-17
    mysql
  • mysql查看当前连接数
    mysql查看当前连接数 1 查看当前连接数2 查看连接到数据库的客户端ip及各连接数3 查看连接到数据库的账号、客户端ip及各连接数4 查看最大连接数5 如果要修改最大连接数为500 ...
    99+
    2023-10-23
    mysql
  • mongodb如何查看当前所在库
    要在 MongoDB 中详细查看当前所在的数据库,您可以使用以下命令: db.getName() 这将返回当前所在的数据库名称。 ...
    99+
    2024-04-02
  • vue的查看请求数据
    Vue是一款前端框架,其与后端进行数据交互的方式通常是通过发送请求获取数据。在实际开发中,我们常常需要查看发送的请求所携带的数据,因为这能够帮助我们更好地理解数据交互的过程,也可以用于调试和排错。本篇文章将介绍如何在Vue中查看请求数据。首...
    99+
    2023-05-24
  • Redis中怎么查看当前的数据库数量
    要查看当前 Redis 中数据库的数量,可以使用 INFO 命令来获取 Redis 服务器的统计信息,包括数据库数量。具体步骤如下:...
    99+
    2024-03-12
    Redis
  • PHP Ajax如何请求MySQL数据库
    PHP Ajax如何请求MySQL数据库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据库:前台页面:choseForm.p...
    99+
    2024-04-02
  • mysql怎么查询当前数据库的表
    要查询当前数据库的表,可以使用以下 SQL 查询语句: SHOW TABLES; 这条 SQL 查询语句会返回当前选定数据库中所有...
    99+
    2024-04-15
    mysql
  • 如何查看MySQL当前的事务模式?
    我们可以运行“SELECT @@AUTOCOMMIT”命令来检查当前的事务模式。mysql> Select @@AUTOCOMMIT; +--------------------+ | @@AUTOCOMMIT | +--...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作