`

mysql查看锁表方法详解

阅读更多

mysql查看锁表方法详解

 

1、show OPEN TABLES where In_use > 0;

查看哪些表在使用中,In_use列表示有多少线程正在使用某张表,Name_locked表示表名是否被锁,这一般发生在Drop或Rename命令操作这张表时。所以这条命令不能帮助解答我们常见的问题:当前某张表是否有死锁,谁拥有表上的这个锁等。

 

 

2、show status like '%lock%', show status like 'Table%'查看服务器状态

 

 

可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:
mysql> show status like 'Table%';
+----------------------------+----------+
| Variable_name       | Value |
+----------------------------+----------+
| Table_locks_immediate   | 105       |
| Table_locks_waited  | 3     |
+----------------------------+----------+
2 rows in set (0.00 sec)

 

 

 锁状态
 
mysql的锁有表锁和行锁,myisam最小锁为表锁,innodb最小锁为行锁,可以通过以下命令获取锁定次数、锁定造成其他线程等待次数,以及锁定等待时间信息。
 
mysql> show status like '%lock%';
+------------------------------------------+---------+
| Variable_name                            | Value   |
+------------------------------------------+---------+
| Com_lock_tables                          | 0       |
| Com_unlock_tables                        | 0       |
| Innodb_row_lock_current_waits            | 0       |
| Innodb_row_lock_time                     | 0       |
| Innodb_row_lock_time_avg                 | 0       |
| Innodb_row_lock_time_max                 | 0       |
| Innodb_row_lock_waits                    | 0       |
| Key_blocks_not_flushed                   | 0       |
| Key_blocks_unused                        | 13396   |
| Key_blocks_used                          | 19      |
| Performance_schema_locker_lost           | 0       |
| Performance_schema_rwlock_classes_lost   | 0       |
| Performance_schema_rwlock_instances_lost | 0       |
| Qcache_free_blocks                       | 0       |
| Qcache_total_blocks                      | 0       |
| Table_locks_immediate                    | 1570736 |
| Table_locks_waited                       | 7294    |
+------------------------------------------+---------+
 

 

如当Table_locks_waited与Table_locks_immediate的比值较大,则说明我们的表锁造成的阻塞比较严重,可能需要调整Query语句,或者更改存储引擎,亦或者需要调整业务逻辑。当然,具体改善方式必须根据实际场景来判断。而Innodb_row_lock_waits较大,则说明Innodb的行锁也比较严重,且影响了其他线程的正常处理。同样需要查找出原因并解决。造成Innodb行锁严重的原因可能是Query语句所利用的索引不够合理(Innodb行锁是基于索引来锁定的),造成间隙锁过大。也可能是系统本身处理能力有限,则需要从其他方面来考虑解决。
 
 
3、show processlist;
查看进程状态
 
mysql> show processlist;
查看进程状态,通过此命令可以查看哪些sql在等待锁
 
4、进入information_schema 数据库,查询表PROCESSLIST,查看各SQL执行状态
 
mysql> select * from PROCESSLIST  where DB='database_name' limit 10;
+----------+---------+---------------------+------------------------------------------+---------+------+-
| ID       | USER    | HOST          | DB          | COMMAND | TIME | STATE | INFO |
+----------+---------+---------------------+------------------------------------------+---------+------+-
| 33076340 | db_user| 192.168.13.1:50355 | database_name | Sleep   |   10 |       | NULL | 
| 33076170 | db_user| 192.168.13.1:44206 | database_name | Sleep   |   97 |       | NULL | 
| 33075794 | db_user| 192.168.13.1:44156 | database_name | Sleep   | 1063 |       | NULL | 
+----------+---------+---------------------+------------------------------------------+---------+------+-
此方式和上面第三种方式是一样的效果
分享到:
评论

相关推荐

    MySQL锁详解

    首先,MySQL的锁机制主要有表级锁、行级锁以及页面锁三种。不同的存储引擎对锁的支持也不同。MyISAM和MEMORY存储引擎使用表级锁,BDB存储引擎支持页面锁,同时也可以使用表级锁,而InnoDB存储引擎则同时支持行级锁和...

    MySQL不停机不锁表主从同步与读写分离配置

    ### MySQL不停机不锁表主从同步与读写分离配置详解 #### 一、XtraBackup 安装 为了实现MySQL不停机不锁表的主从同步与读写分离配置,首先需要安装XtraBackup工具。XtraBackup是一款非常优秀的开源备份工具,尤其...

    MySQL悲观锁总结和实践

    - **表级锁(Table Lock)**:如果SQL语句没有明确指定主键或唯一索引,MySQL可能会执行表级锁,即锁定整个数据表。 **示例**: ```sql -- 行级锁示例 SELECT * FROM t_goods WHERE id = 1 FOR UPDATE; -- 表级锁...

    MySQL与锁详解

    MySQL锁

    mysql读写锁演示案例

    ### MySQL读写锁知识点详解 #### 一、读写锁概念与特征 在数据库系统中,锁机制是一种非常重要的并发控制手段,它主要用于确保多用户同时访问数据时的一致性和完整性。MySQL作为一款广泛使用的开源关系型数据库...

    【课堂笔记】MySQL事务与锁详解.pdf

    MySQL事务与锁详解的知识点如下: 1. 事务的理解与应用场景: 事务是数据库管理系统(DBMS)执行过程中的逻辑单位,是一个不可分割的工作单元,可以包含一条或多条DML语句。在实际应用中,事务常见的使用场景包括:当...

    mysql锁详解

    资源名称:mysql锁详解资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    MYSQL锁机制

    ### MySQL锁机制详解 #### 一、MySQL锁机制概述 MySQL中的锁机制是数据库管理系统用于控制并发事务对数据资源访问的关键技术之一。合理地管理和利用锁机制能够有效地防止数据不一致性和提高系统的并发处理能力。...

    面试mysql 之索引 锁 事物

    ### MySQL索引、锁与事务详解 #### 一、索引 **索引定义与作用:** 索引是一种数据结构,用于加速数据检索的过程。它通过建立数据表中某些列的值与行的位置之间的映射关系,使得数据库系统能够快速定位到所需的...

    mysql的乐观锁、悲观锁.md

    java,乐观锁,悲观锁详解释

    mysql_innoDB 事务与锁详解

    ### MySQL_InnoDB 事务与锁详解 #### 引题:为何引入事务? 事务在数据库管理系统中扮演着极其重要的角色,其主要目的有三: 1. **数据完整性**:确保数据库中的数据始终保持一致性和正确性,避免因部分操作失败...

    MySQL锁(表锁,行锁,共享锁,排它锁,间隙锁)使用详解

    MySQL锁的使用需要根据具体的应用场景来选择,例如,如果应用以查询为主,少量更新,表锁可能是更合适的选择。而如果需要高度并发的读写操作,行锁(如InnoDB存储引擎提供的)则更为合适。MyISAM表锁的锁争用情况...

    MYSQL数据库优化与表设计

    ### MySQL数据库优化与表设计详解 #### 一、数据库结构设计的重要性 在系统开发初期,一个合理且高效的数据库模型设计至关重要。它不仅能简化客户端和服务器端程序的开发及维护工作,还能显著提升系统运行时的性能...

    Mysql 锁机制的详细说明

    【MySQL 锁机制详解】 MySQL 的锁机制是数据库管理系统中用于协调多个并发事务对数据进行访问的一种机制,确保数据的一致性和完整性。在开发中,虽然我们可能并不总是主动使用锁,但它们在多用户环境下确保数据正确...

    新手操作mySQL命令 必看经典图解

    `查看表结构。 - `ALTER TABLE`用于修改表结构,如添加、删除或更改列。 - `DROP TABLE students;`删除表。 4. **数据插入**: - `INSERT INTO students (id, name) VALUES (1, 'John');`插入一条记录。 - 可以...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 第十课MySQL锁机制和事务.pdf │ 第四课SQL基础语法.pdf │ ├─新版MySQL DBA综合实战班 第01天 │ 0_MySQL高级DBA公开课视频.avi │ 1_数据库通用知识介绍.avi │ 2_MySQL8常规安装.avi │ 3_MySQL8非常规安装...

    Mysql面试题详解(个人整理)

    面试中,MySQL的知识点涵盖了从基础到高级的各种主题,包括但不限于数据库引擎的选择、事务处理、锁机制、索引优化、存储结构以及数据恢复策略等。以下是对这些重要知识点的详细解释: 1. **MySQL常用引擎**: - *...

    【MySQL】锁(十三).pdf

    ### MySQL锁机制详解 #### 一、引言 在MySQL的学习旅程中,锁是一个非常重要的概念,它直接关系到数据库的并发控制与数据的一致性。本文将详细讲解MySQL中的锁机制,包括全局锁、表级锁和行级锁等内容,并通过具体...

Global site tag (gtag.js) - Google Analytics