MySQL锁机制

1、目的:解决因资源共享而造成的并发问题。

2、锁的分类:

2.1操作类型:

2.1.1读锁(共享锁):对同一条数据读操作可同时进行,互不干扰;

2.1.2写锁(互斥锁):如果当前写操作没有操作完毕,则无法进行其他的读操作、写操作。

2.2操作范围

2.2.1表锁:一次性对一张表整体加锁,开销小、加锁快,无死锁,但锁的范围大,容易出现锁冲突,并发性低;

2.2.2行锁:一次性对一行数据加锁,开销大、加锁慢,容易出现死锁;锁的范围小,容易出现死锁;

2.2.3页锁:

例:

mysql> create table tablelock(

    -> id int primary key auto_increment,

    -> name varchar(20)) engine myisam;

mysql> insert into tablelock(name) values('a1'),('a2'),('a3'),('a4'),('a5');

mysql> commit;

3、加锁语法:

lock table 表1 read/write,表2 read/write ...

查看加锁的表:

mysql> show open tables;

图1

4、给刚才创建的 tablelock表加锁

mysql> lock table tablelock read;

图2

会话:每个session访问表都没问题

试试读操作:

select * from tablelock;

图3

试试修改数据

mysql> alter tablelock set name=‘a55’ where id=5;

图4
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文:http://blog.csdn.net/soonfly/article/details/70238902 ...
    白驹过隙_忽然而已阅读 282评论 0 0
  • 为什么要学习锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制。 因为数据也是一种供许多用户共享的资源,如...
    Java架构师笔记阅读 945评论 0 7
  • 行锁、表锁对比 开销、加锁速度、死锁、粒度、并发性能 表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概...
    高广超阅读 6,227评论 0 25
  • 表锁 行锁 页锁 表锁:表级别的锁定是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点:实现逻辑非...
    米_8d62阅读 318评论 0 0
  • 根据加锁的粒度区分 全局锁 表级锁 行锁记录锁间隙锁临键锁 根据加锁的场景 乐观锁 悲观锁 全局锁 锁对象是:整个...
    coderymy阅读 179评论 0 0