事务的相关知识

用户会话只是用户到数据库的一个连接,而用户对数据库的操作则是通过会话中的一个个事务来进行的。对事务的管理不仅仅是DBA的任务,每个发布事务的用户也能够对自已的事务进行管理。

事务的开始:
Oracle中的事务由遇到的第一条可执行SQL语句开始。
DDL (Data Definition Language)
DML(Data Manipulation Language )    

事务的结束:
·用户执行commit或rollback语句
·用户执行一条DDL语句,比如create,drop,rename,alter。如果当前事务中包含有已经执行的DML语句,Oracle首先提交事务,然后再将DDL语句作为一个新的只包含一条语句的事务执行并提交。
·用户主动断开到oracle的连接。
·用户进程意外中止。

提交事务前完成的工作:
·在SGA区的回退缓存中生成该事务的回退条目。在回退条目中保存有该事务所修改的数据的原始版本。
·在SGA区的重做日志缓存中生成该事务的重做记录。重做记录中记载了该事务对数据块所进行的修改,并且还记载了对回退段中的数据块所进行的修改。缓存中的重做记录有可能在事务提交之前就写入硬盘中。
·在SGA区的数据库缓丰中记录了事务对数据库所进行的修改。这些修改也有可能在事务提交之前就写入硬盘中。

提交事务时完成的工作:
·在为该事务指定的回退段中的内部事务表内记录下这个事务已经被提交,并且生成一个惟一的SCN记录在内部事务表中,用于惟一标识这个事务。
·LGWR后进进程将SGA区重做日志缓存中的重做记录写入联机重做日志文件。在写入重做日志的同时还将写入该事务的SCN。
·Oracle服务进程释放事务所使用的所有记录锁与表锁。
·Oracle通知用户事务提交完成。
·Oracle将该事务标记为已完成。

回退事务完成的工作:
·Oracle通过使用回退段中的回退条目,撤销事务中所有SQL语句对数据库所做的修改。
·Oracle服务进程释放事务所使用的所有锁
·Oracle通知事务回退成功。
·Oracle将该事务标记为已完成

事务的隔离等级:
(servers=dedicated)
set transaction isolation level read committed
set transaction isolation level serializable
set transaction read only
set transaction read write

alter session set isolation_level=serializable
alter session set isolation_level=read commited

读一致性的工作机制:
设定查询语句的SCN:10023
该查询语句在搜索所需要的数据块时,
如果所需数据块的SCN<=10023,则读取。
如果所需数据块的SCN>10023,查询语句将从回退段中获取对应的数据块的原始版本(原始版本的SCN同样要<=10023)
这样,通过对数据块的SCN进行比较,查询语句将只返回在它开始执行之前已经提交的数据,保证了不会读取到未提交事务所修改的脏数据块,也不会读取到语句开始执行后再提交的数据块。

定义私有回退段
set transaction use rollback segment XXX

在MySQL面试中,事务是一个重要的知识点,以下是一些可能会涉及的事务相关知识点: 1. 事务的四大属性:MySQL中的事务具有四大属性,即原子性、一致性、隔离性和持久性。原子性指事务是不可分割的工作单元;一致性指事务执行前后数据库的状态必须保持一致;隔离性指多个事务并发执行时,彼此之间是隔离的;持久性指事务完成后,对数据库的修改必须是永久性的。 2. 事务的隔离级别:MySQL中的事务可以设置隔离级别,包括读未提交、读已提交、可重复读和串行化四种级别。不同的隔离级别会导致不同的并发问题,需要根据具体的业务需求和数据特点选择合适的隔离级别。 3. 事务的并发问题:MySQL中的事务并发执行时,可能会出现多种并发问题,包括脏读、不可重复读、幻读等。需要通过合适的隔离级别、锁机制等手段来解决这些问题。 4. 事务的提交和回滚:MySQL中的事务可以通过提交和回滚两种方式来终止。提交会将事务中对数据库的修改永久保存,回滚会撤销事务中对数据库的修改。 5. 事务的开销和性能:MySQL中的事务会带来一定的开销和性能影响,需要根据具体的业务需求和数据特点来评估和优化事务的性能。 以上是MySQL面试中可能涉及到的事务相关知识点,应聘者需要了解这些知识点,并能够清晰地解释其原理和应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值