
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于大多数的后端编程开发程序员尤其是Java程序员来说,学习数据库的架构开发技术是必须要掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,数据库事务基础知识概括。
1、事务定义
数据库事务(DatabaseTransaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
2、事务生命周期
事务的开始和结束
开始事务:连接到数据库,执行DML、DCL、DDL语句
结束事务:
1.执行DDL(例如CREATETABLE),DCL(例如GRANT),系统自动执行COMMIT语句
2.执行COMMIT/ROLLBACK
3.退出/断开数据库的连接自动执行COMMIT语句
4.进程意外终止,事务自动rollback
5.事务COMMIT时会生成一个的系统变化号(SCN)保存到事务表
事务的提交和回滚:COMMIT/ROLLBACK
保存点(savepoint):可以在事务的任何地方设置保存点,以便ROLLBACK
3、事物的特性
事务所应该具有的四个特性:
原子性(Atomicity):原子性意味着数据库中的事务执行是作为原子。即不可再分,整个语句要么执行,要么不执行。
每一条T-SQL语句都可以看作是默认被包裹在一个事务之中的,SQLServer对于每一条单独的语句都实现了原子性。
如果用户想要自己定义原子的大小,则需要包含在事务中来构成用户自定义的原子粒度。
一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
一致性分为两个层面:
数据库机制层面
数据库层面的一致性是,在一个事务执行之前和之后,数据会符合你设置的约束(约束,外键约束,Check约束等)和触发器设置.这一点是由数据库进行保证的.
业务层面
对于业务层面来说,一致性是保持业务的一致性。这个业务一致性需要由开发人员进行保证。很多业务方面的一致性可以通过转移到数据库机制层面进行保证.比如,产品只有两个型号,则可以转移到使用CHECK约束使某一列必须只能存这两个型号。
隔离性(Isolation):隔离性。事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
持久性(Durability):意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
即使出现了任何事故比如断电等,事务一旦提交,则持久化保存在数据库中.
4、事务之间的互相影响的4种情况
脏读:某个事务读取的数据是另一个事务正在处理的数据。而另一个事务可能会回滚,造成一个事务读取的数据是错误的。
不可重复读:在一个事务里两次读入数据,但另一个事务已经更改了一个事务涉及到的数据,造成一个事务读入旧数据。
幻读:幻读是指当事务不是独立执行时发生的一种现象。例如一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
更新丢失:多个事务同时读取某一数据,一个事务成功处理好了数据,被另一个事务写回原值,造成一个事务更新丢失。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。