MySQL 数据库锁理论(六)

9. 数据库锁理论

  • 根据操作类型,锁可分为

    • 读锁(共享锁): 针对同一份数据,多个读操作可以同时进行而并不相互影响。
    • 写锁(互斥锁): 当前写操作在没有完成之前,它会阻断其他写锁和读锁。
  • 根据数据操作的粒度划分,锁可分为

    • 表锁(偏读):
    • 行锁(偏写):
    • 页锁:

1. 创建表锁演示实例

  1. 建表 SQL:引擎选择 myisam

    create table mylock (
        id int not null primary key auto_increment,
        name varchar(20) default ''
    ) engine myisam;
    
    insert into mylock(name) values('a');
    insert into mylock(name) values('b');
    insert into mylock(name) values('c');
    insert into mylock(name) values('d');
    insert into mylock(name) values('e');
    
    select * from mylock;
    
  2. mylock 表中的测试数据

    mysql> select * from mylock;
    

    image-20201121144358253

  3. 查看当前数据库中表的上锁情况:show open tables;,In_user 的值0 表示未上锁。

    image-20201121144522832

  4. 添加读/写锁

使用命令:lock table 表名1 read(write) [,表名2 read(write)]

为mylock表添加读锁,即lock table mylock read;

添加之后,我们发现,依然可以读取mylock的数据。

image-20201121145337170

虽然可以读取数据,但是修改数据是不允许的。修改数据时,光标不断的在闪烁。

image-20201121150337831

接着,我们将读锁改为写锁,即 lock table mylock write

添加之后,我们发现,读取数据时会被阻塞,光标不断在闪烁。

image-20201121145455476

最后,解锁,我们可以使用命令: unlock tables;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值