数据库学习-事务

前言:工作也有两三年了,数据库一块一直是弱项,虽说搞了两年的银行项目开发,但大多是去做后端框架的开发,而不是写SQL。故现在又要重温一下数据库的知识,在此只作为记录。

事务是什么,引用百度百科的话就是:

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

事务的四大特性:

1、原子性:多表执行DML语句时,要么都做,要么都不做

2、一致性:完成事务时,所有数据要保持状态的一致性

3、隔离性:防止事务并行执行

4、持久性:事务执行成功后,应保证数据是永久有效的


事务分类:

1、显式事务:手动执行DCL语句

2、隐式事务:设置aurocommit


事务结束标志:

1、commit

2、rollback


隔离级别:

隔离级别名称备注
NO_TRANSCATION不支持事务其实这个应该不算隔离级别
READ_UNCOMMITED支持Dirty Read,不支持unrepeatable Read和phantom Read支持脏读,不支持不可重复读及幻读
READ_COMMITED支持unrepeatable Read和phantom Read,不支持Dirty Read支持不可重复读及幻读,不支持脏读
REPEATABLE支持phantom Read,不支持Dirty Read和unrepeatable Read支持幻读,不支持脏读和不可重复读
SERIALIZABLE不支持Dirty Read、unrepeatable Read和phantom Read不支持脏读、不可重复读和幻读
READ ONLY只读,不允许进行Modify操作Oracle特有
READ WRITE可执行任意DML语句Oracle特有

设置事务的隔离级别:

Set Transcation
如:

set transcation isolation level serializable
set transcation read only
注:只允许设置一种隔离级别


锁机制(这里只针对oracle进行说明):

锁是一种针对多事务同时操作同一数据库对象时控制并发的机制

锁类别:

1、DDL锁:oracle自动加、解锁

2、DML锁:事务开始时加锁,用户执行commit/rollback语句时解锁

3、内部锁:oracle对内部表进行的加锁


锁级别:

1、行锁:不允许对加锁行进行DML操作

2、表锁:不允许对加锁表进行DML操作

3、数据库锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值