美文网首页
数据库锁的基本认识

数据库锁的基本认识

作者: Hmcf | 来源:发表于2019-11-18 11:30 被阅读0次

数据库中锁通常分为行锁和表锁。(有的还有页锁)

行锁:

  • 共享锁
    又称读锁,简单讲就是多个事务对同一数据进行共享一把锁,都能访问到数据,但是只能读不能修改。

    适用于:用来确认某行记录是否存在,并确保没有人对这个记录进行UPDATE或者DELETE操作,如果当前事务也需要对该记录进行更新操作,则很有可能造成死锁。

    使用方法:
    SELECT * from contry where id = "1" lock in share
    由于对于contry 表中,id字段为主键,就也相当于索引。执行加锁时,会将id这个索引为1的记录加上锁,那么这个锁就是行锁。

  • 排他锁
    又称写锁,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,只有获取排他锁的事务可以对数据进行读取和修改。

    适用于:锁定行记录后需要进行更新操作的应用。

    对于多个不同的事务,对同一个资源只能有一把锁。
    与共享锁类型,在需要执行的语句后面加上for update就可以了
    SELECT * from contry where id = "1" for update

  • 悲观锁
    悲观锁包含了共享锁和排它锁。

  • 乐观锁
    不加锁,解决并发 使用版本号+1或者时间戳来记录update/insert的最新数据。

注意:悲观锁和乐观锁的概述在本人另一篇文中https://www.jianshu.com/p/fbc52087cf70
里面有介绍。

表锁:
表级锁使用与并发性不高,以查询为主,少量更新的应用,比如小型的web应用。
而行级锁适用于高并发环境下,对事务完整性要求较高的系统,如在线事务处理系统。

相关文章

  • 数据库锁的基本认识

    数据库中锁通常分为行锁和表锁。(有的还有页锁) 行锁: 共享锁又称读锁,简单讲就是多个事务对同一数据进行共享一把锁...

  • 01.GreenPlum gp数据库锁-查看及解锁

    在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即...

  • 复习盘点-mysql锁知多少(表/行锁、共享读锁/独占写锁、共享

    MyISAM到底怎么读?,这篇问题从多个角度分析mysql数据库锁的基本知识。 1. MySQL锁概论: Mysq...

  • SQL 常用优化手段总结 - 认识数据库锁

    前言 从这一章开始我们将要开始认识一个稍显枯燥但是非常重要的概念 - 数据库锁。由于针对不同的存储引擎的数据库锁的...

  • mysql进阶-行级锁、表级锁、乐观锁、悲观锁

    从应用的角度来看数据库锁可分为悲观锁、乐观锁从数据库(InnoDB)的角度看,数据库锁可以分为行级锁和表级锁 1....

  • 集群多JVM分布式锁实现

    基于数据库表乐观锁 (基本废弃) 要实现分布式锁,最简单的⽅方式可能就是直接创建⼀一张锁表,然后通过操作该表中的数...

  • MySQL锁机制

    1、MySQL锁的基本介绍 ​ 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统...

  • 20171110 MySQL进阶(一)

    数据库基本概念回顾数据库的并发控制:锁MySQL的事务设置MySQL的索引设置MySQL的用户和权限管理 一、数据...

  • 两端锁协议

    1、数据库锁 数据库锁粒度划分:行锁、页锁、表锁。共享锁:读锁、S锁。事务T可以对A进行读取,其他事务只能读取而不...

  • MySQL05

    数据库高级对象,锁,权限管理 视图 索引 触发器 存储过程 悲观锁与乐观锁 行级锁、表级锁、页锁 数据库权限管理 ...

网友评论

      本文标题:数据库锁的基本认识

      本文链接:https://www.haomeiwen.com/subject/mcmvictx.html