zoukankan      html  css  js  c++  java
  • 【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。针对表的查询尽量用视图屏蔽其锁机制。

  • 相关阅读:
    jQuery EasyUI API 中文文档 数字框(NumberBox)
    jQuery EasyUI API 中文文档 数值微调器(NumberSpinner)
    jQuery EasyUI API 中文文档 日期时间框(DateTimeBox)
    jQuery EasyUI API 中文文档 微调器(Spinner)
    jQuery EasyUI API 中文文档 树表格(TreeGrid)
    jQuery EasyUI API 中文文档 树(Tree)
    jQuery EasyUI API 中文文档 属性表格(PropertyGrid)
    EntityFramework 数据操作
    jQuery EasyUI API 中文文档 对话框(Dialog)
    jQuery EasyUI API 中文文档 组合表格(ComboGrid)
  • 原文地址:https://www.cnblogs.com/badboy200800/p/12860322.html
Copyright © 2011-2022 走看看