两种数据库引擎的区别(Innodb/MyIASM)和行级锁

1.Innodb

支持事务,支持外键,支持行级锁即操作时只锁一行,不锁其他行,对高并发好,也支持表级锁,使用的是聚簇索引

那么InnoDB什么时候使用行级锁,什么时候使用表级锁呢

看别人说的有索引的时候是行级锁没有索引的时候是表级锁

 

2.MyIASM

不支持事务,不支持外键,支持表级锁,不支持行级锁,非聚簇索引

 

那么外键到底是什么呢?

比如学号是一个表的主键,然后在另一个表中也有学号这个列,那么第二个表中的学号就是第一个表的外键,或者也可以成学号就是第二个表的外键

保证数据的一致性和完整性

为什么保证呢?

 

你插入表2学号字段的值必需要求在表1的学号字段能找到,(找不到就不能插入呗,删除也一样呗)其中表二中的学号是外键,学号是表一的主键

同一时候。假设你要删除表1的某个学号字段。必须保证表2中没有引用该字段值的列,否则就没法删除。

 

 

 

 

行级锁 分两种

1.共享锁

所有事务只能对其进行读操作而不能进行写操作,而且可能会造成死锁。

一个事务对其加上了共享锁,那么别的事务只能再加共享锁而不能加排它锁,直到在其上面的共享锁被释放。

因为你两个事务同时进行读操作,而此时两者又都想进行修改的操作,两者都在等待对方释放共享锁,进而造成死锁

SELECTidFROM table WHERE id in(1,2) LOCK IN SHARE MODE

2.排它锁

加上排它锁,只能这个事务对其进行读写操作,在此事务结束之前,其他事务不能对其进行加任何锁,其他进程可以读取,不能进行写操作,需等待其释放。

SELECTidFROM mk_user WHERE id=1 FOR UPDATE

 

表级锁

表级锁也分为共享锁和排它锁

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值