【Teradata数据保护机制】锁
锁(Lock):当系统中有用户并发操作时,用于保护数据一致性的机制。可以保证不同用户访问到的是正确的信息。
1.TD四种类型的锁
(1)EXCLUSIVE
排它锁,级别最高。持有此锁时,其它任何新申请锁均需等待。一般是DDL操作,如create、drop、alter数据库/表/视图等。
(2)WRITE
写锁,级别第二。持有此锁时,新申请的READ、WRITE、EXCLUSIVE锁需等待,仅ACCESS锁无需等待。一般是DML操作中的insert、update和delete。
(3)READ
读锁,级别第三。持有此锁时,新申请的WRITE、EXCLUSIVE锁需等待,ACCESS、READ锁无需等待。一般是DML操作中的select。
(4)ACCESS
访问锁,级别最低。持有此锁时,仅新申请的EXCLUSIVE锁需等待。
2.TD锁的作用域
Teradata锁作用域的基本原则是,在保证数据完整性的前提下,尽可能小范围地上锁。此外,Teradata在处理SQL语句时,会自动指定锁的类型以及锁的作用域。下表中N/A表示Not Available,即不存在这种情况;FTS表示FULL TABLE SCAN,即全表扫描。
(1)Row Hash
记录级,只锁定具备相同Row Hash值的记录。在SQL语句中提供了主索引或者唯一次索引时使用,因为可以根据索引值可计算出 ROW HASH 值。
(2)Table/View
表级,锁定全表或全视图所有数据。
(3)Partition
分区级,锁定指定分区所有数据。数据库版本15.10引入。
(4)Database
数据库级,锁定数据库所有表和视图。
3.改变锁的类型
可以通过下面命令降低或者提高锁等级,所有等级的锁均可以提高,但降低锁等级只可以把Read降为Access,其它等级不能降低。
LOCKING ROW FOR ACCESS SELECT * FROM Table_A; //由Read锁降为Access锁 LOCKING TABLE Table_B FOR EXCLUSIVE UPDATE Table_B SET A = 2007; //由Write锁升为Exclusive锁 LOCKING TABLE Table_C FOR WRITE NOWAIT UPDATE Table_C SET A = 2008; //NOWAIT选项表示如果无法获取锁,则语句将被中止,并报7423错误。
总之:针对 update ,insert ,delete等SQL语句一定要及进commit。针对表的查询尽量用视图屏蔽其锁机制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2019-05-09 【Teradata】开启LockLogger与dumplocklog工具使用(含lokdisp工具说明)