数据库
首页 > 数据库> > mysql 锁机制

mysql 锁机制

作者:互联网

mysql的锁机制

含义:锁是计算机协调多个进程或线程并发访问某一资源的机制

在数据库中,除了传统的计算资源(如CPU,RAM,I/O等)的争用之外,数据也是一种用户共享的资源。如何保证数据并发访问的一直型、有效性是所有数据库必须解决的问题,锁冲突也是影响数据库并发访问性能的一个重要因素。因而,锁对数据库很重要。

 

分类

按照操作来分:读/写锁

读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会相互影响。

写锁(排他锁):当前写操作没有完成前,他会阻断其他写锁和读锁。

#查看表上加着的锁
show open tables;

#手动增加表锁
lock table 表名1 read(write), 表名2 read(write),其他;

#释放锁
unlock tables;

#加了读锁(共享锁)之后
lock table 表1 read;
在加锁的session1中:
1.可以读自己吗?
可以
2.可以修改表的内容吗?
不可以!!!!!!!!!!!!会报错error
3.可以读别人吗?
不可以!!!!!!!!!!!


在另外一个session2中:
1.可以读session1中的读锁表吗?
可以
2.可以修改表的内容吗?
不可以!!!!!!!!!!!!会出现阻塞(一直等待)
3.可以读别人吗?
可以!


#加了写锁(排他锁)之后
lock table 表1 write;

在加锁的session1中:
1.可以读自己吗?
可以
2.可以修改表的内容吗?
可以!!
3.可以读别人吗?
不可以!!!!!!!!!!!


在另外一个session2中:
1.可以读session1中的读锁表吗?
不可以,会出现阻塞,需要等待锁被释放
2.可以修改表的内容吗?
不可以!!!!!!!!!!!!会出现阻塞(一直等待)
3.可以读别人吗?
可以!

  

按照粒度分:表锁/行锁

表锁(偏读)

特点:偏向myisam存储引擎,开销小,加锁快;无死锁;锁定力度大,发生锁冲突概率最高,并发度低。

 

行锁(偏写):

页锁:

 

标签:加锁,session1,可以,并发,读锁,mysql,机制,表锁
来源: https://www.cnblogs.com/ivyharding/p/11581664.html