初解数据库——事务

作为程序猿我们都应该清楚,不管是在求职面试的过程中还是在平常的开发中,数据库起了很重要的作用,数据库又分为关系型数据库和非关系型数据库。接下来将会介绍一些数据库方面的基础知识。

提起数据库我们想到的就是我们常常编写的一些sql语句,那这些sql语句在执行的过程中,怎么执行的,什么时候结束,这时候边涉及到一个名词——事务。事务通俗地讲就是表示的是一系列命令的集合,它是并发控制的基本单元。事务具有四大特性:原子性,一致性,隔离性,持久性。

原子性:是指事务中的一系列操作要么全部执行完毕,要么全部都不执行(即命令中有一条没有执行,全部回滚)

一致性:是指数据库的数据在进行一系列的操作之后,数据内容应该是由原来的一致性状态变为另一个一致性的状态。

隔离性:即多个事务之间在执行的时候是互不干扰的。

持久性:即一旦一个事务对数据库进行操作后,这个事务对数据库的影响将是持久的。

在这四种特性中,隔离性的保证是靠锁机制实现的,另外三种特性则是依靠数据库的特性实现的。

说到事务,就不得不说事务的四大隔离级别:读未提交,读已提交,可重复度,序列化,这四种隔离级别都是在解决一些问题时出现的。

读未提交:即在事务执行过程中,事务中的一些执行指令改变了数据库的值,但是该事务却没有提交,并且由于某种原因该事务回滚,而在回滚之前,另一个事务也对数据库的统一数据进行了读操作,即前一事务的修改被后一事务读取到,而由于前一事务的回滚操作,导致后一事务的读取是错误的,这就会导致的脏读问题的出现。当然了除了脏读,不可重复读和幻读都是不可避免的。

读已提交:即事务只有在提交之后,该事务所影响的数据才能被其他事务读取。这样便可以避免脏读问题的产生,但是避免不了不可重复读和幻读问题的出现。

可重复读:在该种隔离级别下,事务可以重复读取不同版本的数据,而不会出现读取到的数据不一致的情况。但是避免不了幻读的产生。

序列化:是指多个事务在执行的时候,需按照一定的次序执行,这样可以严格的控制事务之间执行的次序,从而可以避免幻读的出现。但是效率低下。

至此,数据库的事务知识介绍结束,下章会介绍数据库的存储引擎的相关知识。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值