文档章节

Mysql被锁查询

hebad
 hebad
发布于 2017/08/29 11:37
字数 782
阅读 12
收藏 0

原文:http://imysql.com/2015/03/25/mysql-faq-how-to-fetch-latest-trxid.shtml

 

  1. 执行 SHOW ENGINE INNODB STATUS ,查看事务相关信息
    =====================================
    150303 17:16:11 INNODB MONITOR OUTPUT
    =====================================
    Per second averages calculated from the last 15 seconds
    ...
    ------------
    TRANSACTIONS
    Trx id counter 3359877657 -- 当前最大事务ID
    Purge done for trx's n:o < 3359877468 undo n:o < 0 state: running
    History list length 324
    LIST OF TRANSACTIONS FOR EACH SESSION:
    ---TRANSACTION 0, not started -- 该会话中执行SHOW ENGINE INNODB STATUS,不会产生事务,所以事务ID为0
    MySQL thread id 4692367, OS thread handle 0x51103940, query id 677284426 xx.173ops.com 10.x.x.x yejr init
    SHOW /*!50000 ENGINE*/ INNODB STATUS
    ---TRANSACTION 3359877640, not started --非活跃事务,还未开始
    mysql tables in use 1, locked 0
    MySQL thread id 4678384, OS thread handle 0x41a57940, query id 677284427 xx.173ops.com 10.x.x.x yejr System lock
    select polinfo0_.Fid as Fid39_0_, ...
    
    ---TRANSACTION 3359877652, not started
    MySQL thread id 4678383, OS thread handle 0x50866940, query id 677284420 xx.173ops.com 10.x.x.x yejr cleaning up
    
    ---TRANSACTION 3359877635, ACTIVE 1358 sec, thread declared inside InnoDB 5000 --活跃长事务,运行了1358秒还未结束,要引起注意,可能会导致大量锁等待发生
    mysql tables in use 1, locked 1
    1 lock struct(s), heap size 376, 0 row lock(s), undo log entries 1
    MySQL thread id 3120717, OS thread handle 0x529b4940, query id 677284351 xx.173ops.com 10.x.x.x yejr query end
    insert into t_live_room ...

     

  2. 查看INFORMATION_SCHEMA.INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS 三个表,通过这些信息能快速发现哪些事务在阻塞其他事务
    1. 先查询 INNODB_TRX 表,看看都有哪些事务
      mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
      *************************** 1. row ***************************
       trx_id: 17778 -- 当前事务ID
       trx_state: LOCK WAIT -- 处于锁等待状态,也就是等待其他会话释放锁资源
       trx_started: 2015-03-04 10:40:26
       trx_requested_lock_id: 17778:82:3:6 -- 欲请求的锁
       trx_wait_started: 2015-03-04 10:40:26
       trx_weight: 2 -- 大意是该锁影响了2行记录
       trx_mysql_thread_id: 657 -- processlist中的线程ID
       trx_query: update trx_fee set fee=rand()*1000 where id= 4
       trx_operation_state: starting index read
       trx_tables_in_use: 1
       trx_tables_locked: 1
       trx_lock_structs: 2
       trx_lock_memory_bytes: 360
       trx_rows_locked: 1
       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: 10000
       trx_is_read_only: 0
       trx_autocommit_non_locking: 0
       *************************** 2. row ***************************
       trx_id: 17773
        trx_state: RUNNING
       trx_started: 2015-03-04 10:40:23
       trx_requested_lock_id: NULL
       trx_wait_started: NULL
       trx_weight: 10
       trx_mysql_thread_id: 656
       trx_query: NULL
       trx_operation_state: NULL
       trx_tables_in_use: 0
       trx_tables_locked: 0
       trx_lock_structs: 2
       trx_lock_memory_bytes: 360
       trx_rows_locked: 9
       trx_rows_modified: 8
       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: 10000
       trx_is_read_only: 0
       trx_autocommit_non_locking: 0

      1): kill trx_mysql_thread_id;  2):  use information_schema;  select * from processlist where id in ( trx_mysql_thread_id );  3):  show engine innodb status\G

    2. 再看 INNODB_LOCKS 表,看看都有什么锁
      mysql> select * from information_schema.INNODB_LOCKS\G
      *************************** 1. row ***************************
      lock_id: 17778:82:3:6 --当前锁ID
      lock_trx_id: 17778 --该锁对应的事务ID
      lock_mode: X -- 锁类型,排它锁X
      lock_type: RECORD --锁范围,记录锁:record lock,其他锁范围:间隙锁:gap lock,或者next-key lock(记录锁+间隙锁)
      lock_table: `test`.`trx_fee`
      lock_index: PRIMARY --加载在哪个索引上的锁
      lock_space: 82
      lock_page: 3
      lock_rec: 6
      lock_data: 4
      *************************** 2. row ***************************
      lock_id: 17773:82:3:6
      lock_trx_id: 17773
      lock_mode: X
      lock_type: RECORD
      lock_table: `test`.`trx_fee`
      lock_index: PRIMARY
      lock_space: 82
      lock_page: 3
      lock_rec: 6
      lock_data: 4

       

    3. 最后看 INNODB_LOCK_WAITS 表,看看当前都有哪些锁等待
      mysql> select * from information_schema.INNODB_LOCK_WAITS\G
      *************************** 1. row ***************************
      requesting_trx_id: 17778 --请求锁的事务ID(等待方)
      requested_lock_id: 17778:82:3:6 -- 请求锁ID
      blocking_trx_id: 17773 -- 阻塞该锁的事务ID(当前持有方,待释放)
      blocking_lock_id: 17773:82:3:6 -- 持有的锁ID

       

© 著作权归作者所有

共有 人打赏支持
hebad
粉丝 16
博文 100
码字总数 11190
作品 0
杭州
技术主管
MySQL中的共享锁与排他锁

在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念、...

steven
2016/09/23
32
0
MySQL DBA入门到高级笔记:MySQL架构

http://www.wyzc.com/forum/60180.html?tg=3006123630 MySQL逻辑架构 连接管理与安全性: 1、MySQL会为每一个客户端连接分配一个线程,这个连接的查询只会在这个单独的线程执行。服务器会负责...

大王叫我来巡山Zd
2016/03/31
183
0
悲观锁总结和实践

最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下: 悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系...

真爱2015
2016/01/07
42
0
mysql查询更新时的锁表机制分析

为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制。 一、概述 MySQL有三种锁的级别:页级、表级、行级。 MyISAM和MEMORY存储引擎采用的是表级锁(table-l...

桔子
2013/06/28
0
3
mysql的锁机制

锁概述 mysql锁机制的特点: 不同存储引擎支持不同的锁机制。 MyISAM和MEMORY存储引擎支持表级锁; BDB存储引擎采用页面锁; InnoDB存储引擎支持行级锁。 表级锁: 开销小,加锁快,不会出现...

暮回_梓
2017/09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生...

engeue
14分钟前
0
0
通过ajax访问远程天气预报服务

http://www.webxml.com.cn/zh_cn/index.aspx 更改wsdl文件 打开文件将15行,51行,101行去掉 然后把文件复制到c盘 然后在桌面上面就生成了文件 将文件打成jar包 package cn.it.ws.weather;...

江戸川
今天
1
0
聊聊storm的tickTuple

序 本文主要研究一下storm的tickTuple 实例 TickWordCountBolt public class TickWordCountBolt extends BaseBasicBolt { private static final Logger LOGGER = LoggerFactory.getLogg......

go4it
今天
1
0
自动装箱和自动拆箱

自动装箱和自动拆箱 Java 提供了 8 种基本数据类型,每种数据类型都有其对应的包装类型,包装类是面向对象的类,是一种高级的数据类型,可以进行一些比较复杂的操作,它们是引用类型而不再基...

tsmyk0715
今天
2
0
简易审计系统

1、有时候我们需要对线上用户的操作进行记录,可以进行追踪,出现问题追究责任,但是linux自带的history并不会实时的记录(仅仅在内存中,当用户正常退出(exit logout )时才会记录到history文件里...

芬野de博客
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部