美文网首页
数据库封锁技术

数据库封锁技术

作者: 千释炎 | 来源:发表于2017-09-15 20:37 被阅读0次

数据库通常允许多个用户共享数据信息资源,所以必须对并发的事务进行控制,防止多用户并发使用数据库时造成数据错误,以保证数据的完整性。

事务的概念:

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的很小的工作单位。

数据库通过加锁的方式控制并发,其中有两种锁:

共享锁(S锁):

又称读锁,若事务T对数据对象A加S锁,则事务T可以读A但不能修改A,其他事务只能对A加S锁,而不能加X锁,直到事务T释放A上的S锁。这保证了其他事务可以读A,而在事务T释放A上的S锁之前不能对A进行修改。

排它锁(X锁):

又称写锁,若事务T对数据对象A加上X锁,则事务T可以修改A也可以读A,其他事务不能再对A加任何锁,直到事务T释放A上的锁。这意味着在事务T释放A上的锁之前其他事务不能修改和读取A。

在对数据进行加锁时,需要约定并执行一些规则和协议,包括何时申请锁、保持锁的时间以及何时释放等,这些规则就称为封锁协议:

一级封锁协议:

事务T在修改数据A之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。

一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。在一级封锁协议中如果仅仅是读数据则不进行加锁,因此不能保证可重复读和不读脏数据。

二级封锁协议:

一级封锁协议加上事务T在读取数据A之前必须对其加S锁,读完后方可释放S锁。

二级封锁协议除了防止丢失修改,还可以进一步防止读脏数据。但在二级封锁协议中读完数据后就释放锁,所以不能保证可重复读。

三级封锁协议:

一级封锁协议加上事务T在读取数据A之前必须先对其加S锁,直到事务结束才释放。

三级封锁协议除了防止丢失修改和读脏数据之外,还进一步防止了不可重复读。

三级封锁协议的区别在于什么操作需要申请锁,以及何时释放。

MYSQL还提供了行级锁、表级锁和业级锁

行级锁:

引擎INNODB,仅对指定的一行记录进行加锁,这样其他进程可以对同一个表中的其他记录进行操作

表级锁:

引擎MyISAM,即锁住整个表可以同时读,写不行,在锁定期间,其他线程无法对该表进行写操作;如果是写锁,那么其他线程读也不允许

页级锁:

引擎BDB,一次锁定相邻的一组记录

相关文章

  • 数据库封锁技术

    数据库通常允许多个用户共享数据信息资源,所以必须对并发的事务进行控制,防止多用户并发使用数据库时造成数据错误,以保...

  • ORACLE的锁机制 - blue - 博客园

    设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性。Oracle数据库封锁方式有三...

  • 每日复盘[09-02]

    数据库系统工程师 1.并发操作可能带来的一致性问题:丢失更新/修改,不可重复度,读脏数据。并发控制的主要技术是封锁...

  • 数据库技术基础

    数据库技术的基础 什么是数据库技术 数据库技术就是数据管理的技术,是计算机科学与计算的重要分支,是信息系统的核心和...

  • 数据库连接池

    数据库连接池 C3P0:数据库连接技术 Druid:数据库连接池实现技术,由阿里巴巴技术团队提供 Spring JDBC

  • MySQL数据库(二)——数据库相关技术

    本节主要介绍数据库涉及到的技术,包括数据库系统、SQL 语言和数据库访问技术。 数据库系统 数据库管理系统(Dat...

  • 撮合引擎的建立

    撮合系统设计 撮合技术 摘要: 撮合技术主要是从数据库撮合技术向内存撮合技术发展,这是因为数据库撮合技术越来越无法...

  • 基于SSH的青年志愿者网站系统

    系统使用数据库 mysql(关系型数据库),前台技术 JSP(css,js,ajax,el,java),项目技术:...

  • [转]MYSQL--表分区、查看,建立,删除

    一、 mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果...

  • 数据库事物详解

    1事务的概念什么是事务?我们知道,数据库是一个面向多用户的共享机制,因此数据库管理系统应当具备并发控制和封锁机制,...

网友评论

      本文标题:数据库封锁技术

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