前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >事务管理与数据库安全性(1)

事务管理与数据库安全性(1)

作者头像
ellipse
发布2019-08-16 17:01:43
7970
发布2019-08-16 17:01:43
举报

事务管理

基本概念

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

事物和程序是两个概念。一般来说,一个程序包含多个事务。

定义事务的语句

代码语言:javascript
复制
Begin transaction(开始)
Commit(提或结束)
Rollback(结束)

事务的特性(ACID)

原子性(A):组成事务的多个数据库操作是一个不可分割的单元

(强调整体性,哪怕是最后一步错了,前面的步骤都要撤销)

一致性(C):事务完成时,必须是相关的数据库任然保持一致状态

隔离性(I):多个事务并发执行时,彼此互不干扰

持久性(D):事务完成后数据库的所有修改永久性有效(即使系统出现故障,也可以恢复)

ACID特性可能遭到破坏的因素

֍多个事务并行运行时,不同事务的操作交叉执行

֍事务在运行过程中被强行停止

并发控制

并发控制概述

数据库是一个共享资源,可以供多个用户使用。允许多个用户同时使用同一个数据库的数据库系统称为多用户数据库系统。例如飞机订票数据库系统、银行数据库系统等都是多用户数据库系统。在这样的系统中,在同一时刻并发运行的事务数可达数百上千个。

丢失修改:两个事务同时对一张表进行修改时,只有一个生效,另一个修改丢失。

读脏数据:一个事务读取了另一个事务在回滚前修改的数据。

不可重读:一个事务读取某数据后,该数据被另一事务更新,当他在读进行教研室发现数据不一致。

解决:锁定机制

锁定管理包括:加锁、锁定和解锁。

锁级别:粒度

锁的粒度小 并发性高 但系统开销大

锁的粒度大 并发性低 但系统开销小

并发控制措施

主要技术:封锁

1)封锁就是事务T在对某数据对象(例如:表、记录)操作之前,先向系统发出请求,对其加锁

(2)加锁后事务T就对数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象

封锁类型

不同的锁有不同的控制功能;即,一个事务对数据对象加锁后可有怎样的控制由它的封锁类型决定。

(1)排他锁(简称X锁,或写锁)

含义:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。

功能:保证其他事务在事务T释放数据对象A上的锁之前不能在读和修改A。

(2)共享锁(简称S锁,或读锁)

含义:若事务T对数据对象A加上S锁,则其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁

功能:保证其他事务可以读数据对象A,但在事务T释放A上的S锁之前不能对A做任何修改

封锁协议

(1)一级封锁协议:

内容:事务T在修改数据对象A之前必须对其加X锁,直到事务结束才释放。

可解决的问题:“丢失修改”问题

(2)二级封锁协议:

内容:在一级封锁协议的基础上,另外加上事务T在读取数据对象A之前必须对其加S锁,读完后立即释放。

可以解决的问题:“丢失修改”、“读脏数据”问题。

(3)三级封锁协议:

内容:在一级封锁协议的基础上,另外加上事务T在读取数据对象A之前必须对其加S锁,直到事务结束才释放。

可以解决的问题:“丢失修改”、“读脏数据”、“不可重复读”问题


本文摘自全国计算机等级考试教材系列(三级数据库技术教程)——主编 赵宏杰

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ellipse数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事务管理
    • 基本概念
      • 事务的特性(ACID)
      • 并发控制
        • 并发控制概述
          • 并发控制措施
            • 封锁协议
              • (1)一级封锁协议:
                • (2)二级封锁协议:
                  • (3)三级封锁协议:
                  • 内容:在一级封锁协议的基础上,另外加上事务T在读取数据对象A之前必须对其加S锁,直到事务结束才释放。
                  • 可以解决的问题:“丢失修改”、“读脏数据”、“不可重复读”问题
                  相关产品与服务
                  数据库
                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档