mysql innodb 写锁_【Mysql】十二、Mysql高级篇 --- 数据库锁

表锁、行锁

一、表锁(MyISAM)

读锁(READ)会阻塞写,但不会阻塞读;写锁(WRITE)会把写锁和读锁都阻塞

读锁阻塞写,写锁阻塞读和写

1、查看加锁的表

SHOW OPEN TABLES

2、设置加锁

读锁

LOCK TABLE table_name1 READ

session1会话对某个表加 READ 锁后,当前会话仅可以读该表。

session2(其他session)会话可读该表但不可写,等待session1释放 READ 锁后,session2可继续 WRITE 操作

2. 写锁

LOCK TABLE table_name1 WRITE

3、解锁

UNLOCK TABLES

二、行锁(InnoDB)

InnoDB有行级锁,针对的是一个事务,只有当前事务commit之后,才会释放锁。其他事务才可获取到锁并且执行。如过有多个事务同时争抢同一条数据,其余数据就得等待。

需要注意:索引失效,转全表扫描,行锁边表锁。

行锁性能分析

SHOW STATUS LIKE 'innodb_row_lock%';

+-------------------------------+-------+

| Variable_name | Value |

+-------------------------------+-------+

| Innodb_row_lock_current_waits | 0 | -- 当前等待锁的数量

| Innodb_row_lock_time | 13444 | -- 从系统启动到现在锁锁定总时长

| Innodb_row_lock_time_avg | 13444 | -- 每次等待所花费的平均时间

| Innodb_row_lock_time_max | 13444 | -- 等待最长的一次花费的时间

| Innodb_row_lock_waits | 1 | -- 系统到现在总公等待次数

+-------------------------------+-------+

标签:加锁,--,lock,数据库,---,读锁,Innodb,Mysql,row

来源: https://blog.csdn.net/m0_46537958/article/details/113810728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值