mysql非关锁_MySQL 有关锁的简单介绍
) [test]> set global innodb_status_output_locks=1;
Query OK,0 rows affected (0.00sec)
(root@localhost) [test]> show variables like ‘%innodb_status_output%‘;+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| innodb_status_output | OFF |
| innodb_status_output_locks | ON |
+----------------------------+-------+
2 rows in set (0.00 sec)
如下是开启 innodb_status_output ,show engine innodb status 输出的详细信息:
找到 TRANSACTIONS , heap_no 2,3,4 表示的是插入的顺序,其中包含两个隐藏列, len 6 是指针列,len 7 是什么列来着忘了
在 show engine innodb status 中的 thread_id 对应的是 show processlist 中 processlist_id 。
这样看有点麻烦,可以借助 information_schema 中的几张表,innodb_trx,innodb_locks,innodb_lock_waits
在 5.7 版本中有一张 innodb_lock_waits
(root@localhost) [sys]> select * frominnodb_lock_waits\G*************************** 1. row ***************************wait_started:2019-02-28 16:26:18wait_age:00:00:18wait_age_secs:18locked_table: `test`.`lock_1`
locked_index:PRIMARYlocked_type: RECORD
waiting_trx_id:260217waiting_trx_started:2019-02-28 16:26:18waiting_trx_age:00:00:18waiting_trx_rows_locked:1waiting_trx_rows_modified:0waiting_pid:18waiting_query:update lock_1 set b=6 where a=4waiting_lock_id:260217:217:3:3waiting_lock_mode: X
blocking_trx_id:260213blocking_pid:19blocking_query:NULLblocking_lock_id:260213:217:3:3blocking_lock_mode: X
blocking_trx_started:2019-02-28 16:11:46blocking_trx_age:00:14:50blocking_trx_rows_locked:1blocking_trx_rows_modified:0sql_kill_blocking_query:KILL QUERY 19sql_kill_blocking_connection:KILL 19
1 row in set, 3 warnings (0.00 sec)
# kill query :表示杀掉查询,
# kill 表示这个连接也杀掉
四、AI 自增锁
MySQL 的自增存在一个回溯问题,简单说 MySQL 的自增是不持久化的。当数据库被异常重启 可以通过 select max(auto_inc_col)from t for update;
重新获得表的自增起始id 值,这个可能会造成 id 冲突。
自增锁在提交完成之后就已经被释放了。所以自增锁持有的时间是SQL的执行时间。假如你插入的是一个大事务的话就会出现阻塞了。
而x,ix 等是需要commit 之后才能释放的。
设置 innodb_autoinc_lock_mode=2 // 每一条记录加锁释放,这个提高了并发能力,但是可能出现一条语句中的数据不连续了。
MySQL 有关锁的简单介绍
标签:pid record src primary thread slist orm 不同的 info
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:https://www.cnblogs.com/Camiluo/p/10444582.html
mysql非关锁_MySQL 有关锁的简单介绍相关推荐
- mysql 前后代表什么_MySQL的锁
1.什么是锁 锁机制用于管理对共享资源的并发访问. lock与latch latch一般称为闩锁(轻量级的锁),因为其要求锁定的时间必须非常短.若持续的时间长,则应用的性能会非常差.在InnoDB存储 ...
- mysql innodb默认的锁_Mysql InnoDB锁
MySQL 不同引擎的锁机制: MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoD ...
- mysql innodb 锁_MySQL/InnoDB锁机制
显式加锁 select ... lock in share mode:加 S 锁 select ... for update:加 X 锁 MySQL快照读和当前读 在一个支持MVCC并发控制的系统中, ...
- mysql空事务死锁_mysql空当锁导致死锁_mysql
间隙锁的分析: 表结构如下: CREATE TABLE `test_gap` ( `ID` int(11) NOT NULL, -- 主键 `NAME` varchar(255) NOT NULL, ...
- mysql mdl 锁_MySQL MDL锁
MDL全称为metadata lock,即元数据锁.MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务(显式或隐式)的时候,不可以对元数据进行写入操作.因此从MySQL5.5版本开始引入了M ...
- mysql外键读锁_MySQL的锁
1.什么是锁 锁机制用于管理对共享资源的并发访问. lock与latch latch一般称为闩锁(轻量级的锁),因为其要求锁定的时间必须非常短.若持续的时间长,则应用的性能会非常差.在InnoDB存储 ...
- mysql全局读写怎么锁_MySQL全局锁和表锁
最近正好在看操作系统中关于线程,锁的部分,也可以学习一下数据库种的锁. MySQL的锁分为全局锁,表级锁,行锁三类. 全局锁 名思义,全局锁就是对整个数据库实例加锁.MySQL提供了一个加全局读锁的方 ...
- mysql 全局锁_Mysql全局锁和表级锁
以前对Mysql的锁的认识,只了解表锁和行锁,其实Mysql的锁的种类还是不少的,有全局锁,表级锁,行级锁,还有元数据锁,间隙锁,临界锁. 一 全局锁 Mysql的全局锁是对整个实例加锁,加锁之后,数 ...
- mysql默认使用悲观锁_mysql乐观锁和悲观锁详解
mysql乐观锁和悲观锁详解 相信很多朋友在面试的时候,都会被问到乐观锁和悲观锁的问题,如果不清楚其概念和用法的情况下,相信很多朋友都会感觉很懵逼,那么面试的结果也就不言而喻了. 那么乐观锁和悲观锁到 ...
最新文章
- ucos操作系统的内核有哪些调度方法
- animation动画的使用
- Discretized Streams: An Efficient and Fault-Tolerant Model for Stream Processing on Large Clusters
- ORA-19809: limit exceeded for recovery files问题解决
- oracle undo head,淺談Oracle的undo管理
- 文件夹批量重命名不会操作?快来看看吧
- Carpet-mod常用的用法记录
- 网络型PLC可编程控制器实验装置(立式、挂箱积木式)
- 从React专利事件看开源软件许可
- 腾讯云服务器用户名在哪里看,腾讯云服务器如何查看账号操作日志信息
- 飞思卡尔Kinetis系列单片机被锁住后,怎么解锁
- android8.1 相机(SnapdragonCamera)长按拍照时关闭闪光灯
- 计算机正确的坐姿教案,【幼儿园坐姿教案】幼儿园大班坐姿教案_关于幼儿坐姿的教案_亲亲宝贝网...
- 电子计算机常用面试题,计算机常用面试题文档.doc
- z中国禽肉深加工市场盈利动态与竞争前景分析报告2022-2027年
- java 内部类声明 抽象类_Java 抽象类、接口、内部类
- 实习日记(5-18)Socket与MQTT
- linux设备驱动归纳总结(八):2.match.probe.remove
- 2022年武汉江汉区第二批区级科技企业孵化器和众创空间申报(附申报时间+要求+材料)
- 项目管理(PMP)真题解析(一)