博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库事务&锁机制
阅读量:2055 次
发布时间:2019-04-28

本文共 959 字,大约阅读时间需要 3 分钟。

1 数据库事务

数据库事务就是一系列操作序列的集合,这些集合要么同时成功,要么同时失败

2 Oracle中的事务

2.1 手动提交事务

Oracle数据库中,增删改查语句就是事务的开始,没有特有的事务开始指令(mysql中开始事务的指令是begin)

commit指令用来提交
rollback指令用来回滚
以上操作完成就是一次事务的结束.

2.2 自动提交事务

当指定DDL语句时,事务自动提交.

用户关闭一次会话的时候会自动提交
系统崩溃或者断电时,会自动回滚事务.

2.3 savepoint

当一个操作序列中有很多条sql语句,但是只想让其中某些部分成功,某部分失败,此时可以使用savepoint.

在这里插入图片描述
此时就可以做到

3 事务的ACID属性

  • 原子性(Atomicity) :
    一个操作序列要么全成功,要么全失败,不可以被分割.
  • 一致性(Consistency ) :
    就是数据底层存储的完成性,要由其他三个属性共同来保证.也就是数据不可以发生错乱.并且一致性是最重要的.
  • 隔离性(Isolation) :
    各个事务之间不会产生影响,隔离性包含了四种隔离级别,严格的隔离级别会导致效率问题,在某些情况下,为了保证效率需要降低隔离级别.
  • 持久性(Durablity) :
    所有数据必须持久化到存储介质中,保证系统在瘫痪后,数据不会丢失.

4 隔离级别

四种隔离级别:(严格程度越来越高)	 1,读未提交	 2,读已提交	 3,可重复读	 4,序列化 可能导致的问题:	 1,脏读	 2,不可重复读	 3,幻读

在这里插入图片描述

4.1 关闭事务的自动提交

查看自动提交属性状态

select @@autocommit

4.2 设置事务隔离级别

在这里插入图片描述

4.3 设置全局事务隔离级别

在这里插入图片描述

5 锁机制

为了解决并发访问的时候数据不一致的问题,需要给数据枷锁,加锁的时候就涉及锁的力度问题.

数据库锁的分类

  • 1,数据库
  • 2,表
  • 3,行

不同锁的区别

他们之间的效率是不同的,锁力度越小,效率越高,锁粒度越大,效率越低.

1,库锁:并发访问时候,同一时刻只能有一个请求对数据库进行访问,其他请求都要阻塞.
在这里插入图片描述

2,表锁:锁指定的表,其他请求就不能访问该表,但是还可以访问其他的表和行记录

在这里插入图片描述

3,行锁:只有锁住的行不可以被其他请求访问,其他行数据都可以进行访问

在这里插入图片描述

转载地址:http://annlf.baihongyu.com/

你可能感兴趣的文章
Java8学习笔记(二)—— Lambda表达式
查看>>
Java8学习笔记(三)—— Optional类的使用
查看>>
Java8学习笔记(四) —— Stream流式编程
查看>>
Java8学习笔记(五)—— 方法引用(::双冒号操作符)
查看>>
数据结构与算法(四)—— 栈与队列
查看>>
数据结构与算法(五)—— 广义表
查看>>
微服务简介
查看>>
CAP定理
查看>>
Docker初探
查看>>
Docker镜像常用命令
查看>>
使用Dockerfile定制镜像
查看>>
Docker容器数据持久化
查看>>
Docker Compose
查看>>
GitLab克隆项目出现 “git未能顺利结束(退出码128)”问题的解决
查看>>
SpringBoot整合FastDFS(附源码)
查看>>
在RoboWare Studio下利用python语言实现话题
查看>>
科学计算库——NumPy库
查看>>
数据分析处理库——Pandas
查看>>
Ubuntu 18.04 swap分区扩展
查看>>
Sophus的编译与使用
查看>>