事务的作用,太好了

本文探讨了高要求环境下(如银行及高速股票市场)确保数据完整性和ACID特性的方法。文章介绍了不同类型的锁机制(如ROWLOCK和PAGELOCK),并讨论了三种事务不利表现:脏读、不可重复读及幻读,及其对事务隔离性的影响。

1,对于哪些要求高的企业,如银行,高速的股标市场,他们可以保证数据的完整性,和ACID。

2,可以实现定制的数据验证,保护重要的数据。

3,S,X,U,IS,IX,SIX

4,ROWLOCK,PAGELOCK,扩展盘区LOCK,表LOCK,数据库LOCK,键锁

5,有三种事务不利表现:

脏读    每一个事务

要BEGIN TRAN   COMMIT TRAN(他是你把事务隔离级虽设为SET  TRANSACTION ISOLATION LEVEL  READ UMCOMMITED)

不可重复读

破坏了事务的隔离性,

影行,

T1和T2间数据交叉UPDATE

而且也多了结果集。

事务 的兼容性:很多类型,

学习起来,也要花时间啊。

 

 

### Nested Transactions 的实现方法和作用 #### 实现方法 嵌套事务(Nested Transaction)是指在一个外部事务中可以启动多个内部事务。这些内部事务具有独立的提交或回滚能力,但它们的行为仍然受到外部事务的影响。具体来说,在数据库管理系统中支持嵌套事务的方式通常依赖于保存点(Savepoint)。通过创建保存点,可以在不终止整个事务的情况下部分地回滚某些操作。 在 SQL 中,可以通过 `SAVEPOINT` 命令来定义一个保存点[^1]。例如: ```sql BEGIN TRANSACTION; -- 执行一些SQL语句... SAVEPOINT savepoint_name; -- 创建保存点 -- 继续执行更多SQL语句... ROLLBACK TO SAVEPOINT savepoint_name; -- 如果需要,回滚到保存点 COMMIT; -- 提交整个事务 ``` 这种机制允许开发者在遇到错误时仅撤销最近的操作而保留之前已完成的工作成果。值得注意的是,尽管每个子事务看起来像是单独处理单元,但从全局视角看它仍然是属于父级大事务的一部分直到最终确认完成或者完全撤消为止[^2]。 #### 作用 引入 nested transactions 主要是为了增强系统的灵活性以及提高异常情况下的恢复效率。以下是其主要功能及优势: 1. **局部失败隔离**:当某个子事务出现问题并决定进行 rollback 时,并不会影响其他已经成功结束的兄弟节点或者是更高层母体结构的状态转换过程; 2. **简化复杂业务逻辑管理**:对于那些涉及多阶段或多模块协作的任务流程而言,利用层次化的控制模式能够更好地组织代码架构从而降低维护成本; 3. **提供更精细粒度的数据保护选项**:相比传统意义上的一次性全部接受/拒绝方案,现在可以根据实际需求灵活调整哪些变更应该被持久化下来哪些则需丢弃重做等等决策制定依据更加多样化合理化[^1]. ```python try: connection.begin() # 开始外层事务 cursor.execute("INSERT INTO tableA VALUES (...)") try: connection.savepoint('sp1') # 设置保存点 sp1 cursor.execute("UPDATE tableB SET column=value WHERE condition") except Exception as e: connection.rollback_savepoint('sp1') # 遇错只回退至保存点而不破坏整体进度 finally: connection.commit() # 正常情况下提交所有更改 ``` 以上 Python 示例展示了如何结合使用连接对象上的 begin(), savepoint(), 和 rollback_savepoint() 方法来模拟具备基本特性集的嵌套型态事物行为表现形式之一种可能实现方式[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值