- 并发控制和事务
并发控制防止并发运行的进程不正确地插入、删除或更新相同的数据。系统通过两种机制维护并发控制:
•事务
•锁
- 事务
如果一组事务产生与任意输入的相同事务的任意串行执行相同的结果,则该组事务是可串行化的。
一组事务只有在可串行化时才是正确的。二阶段锁(2PL)协议确保了事务的可串行性。
下表描述了两阶段锁定协议的阶段:
阶段 | 事务行为 |
开始节点 | 在操作对象之前获取对象的锁定 Teradata Optimizer尽可能在事务开始的时候就申请锁资源 |
结束阶段 | 释放先前获取的锁,并且在其释放锁之后不再获取任何锁。 锁释放是一种全或无操作。一旦获得锁,在事务提交或完全回滚之前,不会释放锁。 |
- Teradata模式事务
Teradata模式事务可以是隐式或显式的。显式或用户生成的事务是围绕一个或多个请求的一组BEGINRANSACTION/END transaction语句。所有其他请求都是隐式事务。
例如下面的事务处理过程:
BEGIN TRANSACTION;
DELETE FROM Employee
WHERE Name = ‘Smith T’;
UPDATE Department
SET EmpCount=EmpCount-1
WHERE DeptNo=500;
END TRANSACTION;
如果在处理BEGINTRANSACTION和END TRANSACTION语句中的DELETE或UPDATE语句时发生错误,系统会将Employee和Department表恢复到事务开始前的状态。如果Teradata事务期间发生错误,系统将回滚整个事务。
- 锁
Teradata数据库资源上使用的大多数锁都是自动获得的。用户可以使用LOCKING请求修饰符升级锁的严重性,但不能降级锁的严重程度。请求的数据完整性要求决定了系统使用的锁的类型。
对另一个用户锁定的资源的请求被排队(在锁定级别冲突的情况下),直到使用该资源的进程释放其对该资源的锁定。如果无法立即获得锁,用户可以指定中止请求。
- 恢复和事务
恢复是将不一致的数据库恢复到一致状态的过程。
事务在这个过程中扮演着关键的角色,因为它们被用来“回放”(使用最一般意义上的术语)数据库的一系列更新,要么将其恢复到某个早期状态,要么将它恢复到当前状态。
- 系统和介质恢复
- 事务恢复
可以进行两种类型的自动事务恢复:
•单笔交易恢复
•数据库恢复
下表详细说明了两种自动恢复机制发生时的情况。
恢复类型 | 恢复动作 |
单笔交易恢复 | 由于以下原因中止单个事务: •事务死锁 •用户错误 •用户启动的中止命令 •数据表不一致 单事务恢复使用临时日志来实现其数据恢复。 |
数据库恢复 | 由于以下原因之一执行重新启动: •硬件故障 •软件故障 •用户命令 |
- AMP恢复
当AMP在系统恢复过程中无法联机时(这是使用关闭的AMP恢复日志完成的),Teradata数据库将继续使用回退数据处理请求。当关闭的AMP重新联机时,关闭的AMP恢复过程将开始更新AMP的数据,如下所示。
条件 | AMP状态 |
要处理的大量行 | Offline |
只有几行要处理 | Online |
- 子表恢复
Teradata数据库可以将某些文件系统错误隔离到特定的数据或索引子表,或隔离到数据或索引个子表中的连续行范围(“区域”)。在这些情况下,Teradata数据库仅标记受影响的子表或区域。这通过允许不需要访问下行子表或行的事务继续进行,而不会导致需要重新启动系统的数据库崩溃,从而提高了系统性能和可用性。
需要向下子表或区域的正在进行的事务被中止。在问题解决之前,不允许访问向下子表或区域的后续事务。
- 两阶段提交协议
两阶段提交(2PC)是一种用于确保分布式数据库之间更新一致性的协议,在该协议中,事务提交操作中的每个参与者都投票决定提交或中止更改。参与者在提交更改之前等待,直到他们知道所有参与者都可以提交。
参与者是一个“数据库管理员”,代表事务执行一些工作,并提交或中止对数据库的更改。参与者也可以是较低级别参与者的协调员。
通过投票提交,参与者保证它可以提交或回滚其部分交易,即使在收到投票结果之前崩溃。
2PC协议允许开发客户信息控制系统(CICS)和信息管理系统(IMS)应用程序,这些应用程序可以以同步的方式更新一个或多个Teradata数据库或数据库,或同时更新其他DBMS下的两个数据库。结果是,在定义的工作单元中请求的所有更新要么成功,要么失败。