mysql8查看锁

这篇具有很好参考价值的文章主要介绍了mysql8查看锁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一。准备环境

1.登录mysql,设置锁等待时间,然后退出。

mysql> set global innodb_lock_wait_timeout=1200;
Query OK, 0 rows affected (0.00 sec)
 

2.再次登录MySQL。打开第一个session

mysql8查看锁

 3.登录msyql,打开第二个session

2.登录打开第二个session
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)

mysql> use test

mysql> update temp set name='bb' where id=1;  #执行这条sql,会一直卡住。

4.登录MySQL,打开第三个session。

a:查看

mysql> select trx_id,trx_state,trx_started,trx_tables_locked,trx_rows_locked,trx_query from information_schema.innodb_trx;

mysql8查看锁

看上图trx_state的状态LOCK_WAIT,同时trx_query对应的sql语句,说明执行这条sql阻塞了。事务id的字段trx_id的值1755425

b:查看

mysql> select ENGINE_LOCK_ID,ENGINE_TRANSACTION_ID,LOCK_MODE,LOCK_TYPE,INDEX_NAME,OBJECT_SCHEMA,OBJECT_NAME,LOCK_DATA,LOCK_STATUS,THREAD_ID from performance_schema.data_locks;

mysql8查看锁

看上图的lock_status出现了一个WAITING,同时THREAD_ID为57的线程处于等待状态。对应的ENGINE_TRANSACTION_ID的值就是a操作的图字段trx_id的值1755425。

4.还要查看锁事务的对应关系,

mysql> select locked_table_name,locked_index,waiting_pid,waiting_lock_id,blocking_lock_id,blocking_pid from sys.innodb_lock_waits;

mysql8查看锁

再次对比下。可以找到关系,1等待的事务处理,是被2阻塞了。也就是锁住了,需要2释放锁,1才可以执行

mysql> select ENGINE_LOCK_ID,ENGINE_TRANSACTION_ID,LOCK_MODE,LOCK_TYPE,INDEX_NAME,OBJECT_SCHEMA,OBJECT_NAME,LOCK_DATA,LOCK_STATUS,THREAD_ID from performance_schema.data_locks;

mysql> select locked_table_name,locked_index,waiting_pid,waiting_lock_id,blocking_lock_id,blocking_pid from sys.innodb_lock_waits;

mysql8查看锁

 同时,查看waiting_pid跟blocking_pid的值就是线程id,对应processlist

mysql> select locked_table_name,locked_index,waiting_pid,waiting_lock_id,blocking_lock_id,blocking_pid from sys.innodb_lock_waits;

mysql> show processlist;

mysql8查看锁

5.现在上面图看不到blocking_pid对应的线程THREAD_PID

mysql>  select ENGINE_LOCK_ID,ENGINE_TRANSACTION_ID,LOCK_MODE,LOCK_TYPE,INDEX_NAME,OBJECT_SCHEMA,OBJECT_NAME,LOCK_DATA,LOCK_STATUS,THREAD_ID from performance_schema.data_locks;

mysql> select locked_table_name,locked_index,waiting_pid,waiting_lock_id,blocking_lock_id,blocking_pid from sys.innodb_lock_waits;

mysql8查看锁

6.通过上图可以看到。 blocking_pid为15 对应的线程THREAD_PID 为56.

waiting_pid为16 对应的线程THREAD_PID 为57.

mysql> select THREAD_ID,EVENT_ID,EVENT_NAME,SQL_TEXT from performance_schema.events_statements_history where THREAD_ID in (56,57) order by THREAD_ID,EVENT_ID;

mysql8查看锁

 从图上分析,就可以看出blocking_pid,也就是已经锁了执行的sql是啥。

mysql8查看锁文章来源地址https://www.toymoban.com/news/detail-452787.html

到了这里,关于mysql8查看锁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS环境下的MYSQL8安装

    参考连接:https://www.cnblogs.com/jasonx1an/p/16690866.html 下载网址:https://dev.mysql.com/downloads/mysql/ 查看 mariadb 卸载 mariadb 再次查看 将软件安装包上传到linux根目录下 创建文件夹 解压 安装 查看mysql安装包 初始化数据库 生成数据库临时密码 进入数据库,输入临时密码 设置密码 退出,

    2024年02月15日
    浏览(35)
  • mysql(八)docker版Mysql8.x设置大小写忽略

    Mysql 5.7设置大小写忽略可以登录到Docker内部,修改/etc/my.cnf添加lower_case_table_names=1,并重启docker使之忽略大小写。但MySQL8.0后不允许这样,官方文档记录: lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is pr

    2024年01月19日
    浏览(55)
  • linux环境安装mysql8.0.32

    访问官网:https://www.mysql.com/ 往下划到最下面: 点击Community Server 按如下图步骤点选下载 点选archives 选择版本,类型,系统位数 下载 手动卸载my.cnf文件 检查是否卸载成功 检查系统是否安装了mariadb数据库, mariadb数据库是mysql的分支,是免费开源的。 mariadb和msyql会有冲突。首

    2024年02月12日
    浏览(55)
  • Centos7环境下安装MySQL8详细教程

    1、下载mysql安装包 下载哪个版本,首先需要确定一下系统的glibc版本,使用如下命令: ​​​​​​​   2、检查是否安装过mysql ps:因为以前用yum安装过,所以先用yum卸载。如果不是此方式或者没安装过则跳过   查看是否有mysql依赖 如果有则卸载 3、检查是否有mariadb 如果有

    2024年04月10日
    浏览(63)
  • Ubuntu系统环境搭建(七)——Ubuntu安装MySQL8.0

    ubuntu环境搭建专栏🔗点击跳转 1.1、下载 在 /usr/local/ 下执行,下载资源包 1.2、解压安装 2.1、基本设置 2.1.1、文件夹重命名 重命名 MySQL 文件夹 2.1.2、PATH 变量 在最下面追加 重载环境变量 2.1.3、确认安装 查看版本 有报错就先执行下面的指令 确定 MySQL 安装成功后,可删除压缩

    2024年02月11日
    浏览(39)
  • Linux环境下Mysql8的下载、安装、主从模式搭建

      下载地址:MySQL :: Download MySQL Community Server (Archived Versions) 文件名称:mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz 先解压xz xz -d mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz 再解压tar tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar mkdir data groupadd mysql useradd -g mysql mysql chown -R mysql.mysql /data/mysql8 /data/mysql8是解压

    2024年02月08日
    浏览(51)
  • Linux环境离线安装MySQL8.0.33

    目录 一、准备 1、检查libaio.so.1 2、卸载删除原有的mariadb 3、删除my.cnf 4、下载mysql安装包 二、安装 1、上传mysql 2、建立mysql所需目录 3、建立配置文件my.cnf 4、创建mysql用户并授权 5、初始化数据库 6、启动MySQL数据库 7、配置MySQL环境变量 8、修改root登录密码  三、常见启动报错

    2024年02月10日
    浏览(36)
  • python+django+mysql项目实践一(环境准备)

    Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 安装Django 在pycharm文件—设置进行安装 新建Django项目 注意项目创建目录 项目默认目录文件说明:

    2024年02月14日
    浏览(32)
  • MySQL8.0版本在CentOS系统安装&&修改MySQL的root密码和允许root远程登录(介绍但对于生产来说不安全,学习可用)

    注意:安装操作 需要root权限 安装 配置yum仓库(秘钥为GnuPG签名,2023为版本的秘钥(对我当前是最新的),后面可能会改变)  # 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql- 2023 # 安装Mysql8.x版本 yum库, 其中的el7代表的应该是LInux7版本,可以参考阿里云的# MySQL :: 下载

    2024年04月14日
    浏览(52)
  • 解决mysql8.0 lower_case_table_names 大小写敏感设置问题

    lower_case_table_names=1 表示 mysql 是不区分大小写的 lower_case_table_names=0 表示 mysql 是区分大小写的 根据网上资料得知mysql8.0之后,lower_case_table_names 配置必须在安装好 MySQL 后,初始化 mysql 配置时才有效。一旦 mysql 启动后,再设置是无效的,而且启动报错。 需要重新初始化MySQL数据

    2024年02月15日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包