文档详情

《北大青鸟oracle教程集_3》.ppt

发布:2015-10-13约3.52千字共26页下载文档
文本预览下载声明
锁和表分区 第三章 回顾 目标 掌握锁定的概念及其实现用法 掌握表分区的概念及其实现方法 锁定概念 8 - 1 允许或拒绝资源访问的一种机制 资源可以是特定行或整个表 控制对数据的并发访问 防止在同时访问相同资源的用户之间出现破坏性的交互操作 锁定概念 8 - 2 锁定类型 行级锁 表级锁 行级锁 行被排他锁定 在某行的锁被释放之前,其他用户不能修改此行 使用 commit 或 rollback 命令释放锁 Oracle 通过使用 INSERT、UPDATE 和 SELECT…FOR UPDATE 语句自动获取行级锁 锁定概念 8 - 3 SELECT…FOR UPDATE 子句 在表的一行或多行上放置排他锁 用于防止其他用户更新该行 可以执行除更新之外的其他操作 锁定的概念 8 - 4 FOR UPDATE WAIT 子句 Oracle9i 中的新增功能 防止无限期地等待锁定的行 允许对锁的等待时间进行更多的控制 等待间隔必须指定为数值文字 等待间隔不能是表达式、赋值变量或 PL/SQL 变量 锁定概念 8 - 5 表级锁 保护表的数据 在多个用户同时访问数据时确保数据的完整性 可以设置为三种模式:共享、共享更新和 排他 语法: Lock table table_name in mode; 锁定概念 8 - 6 共享锁 锁定表 仅允许其他用户执行查询操作 不能插入、更新和删除 多个用户可以同时在同一表中放置此锁 共享更新锁 锁定要被更新的行 允许其他用户同时查询、插入、更新未被锁定的行 在 SELECT 语句中使用“FOR UPDATE”子句,可以强制使用共享更新锁 允许多个用户同时锁定表的不同行 锁定概念 8 - 8 排他锁 与其他两种锁相比,排他锁是限制性最强的表锁 仅允许其他用户查询数据 不允许执行插入、删除和更新操作 在同一时间仅允许一位用户在表上放置排他锁 共享锁与此相反 分区的概念是指可以将表拆分为几个部分 在数据仓库应用程序中非常有用 根据键值范围对表进行拆分 表的每个部分称为“分区” 分区被独立存储和管理 通过引用逻辑表名称进行查询和更新 分区方法 分区类型 范围分区 散列分区 复合分区 列表分区 范围分区 根据列值的范围将行映射到分区 由表的分区规范进行定义: PARTITION BY RANGE ( column_list ) 由每个单独分区的分区规范进行定义: VALUES LESS THAN ( value_list ) 其中 column_list 是列的有序列表 value_list 是 column_list 中列值的有序列表 范围分区的语法: create table table_name (column_name data type,column_name data type,….) partition by range(column_name) (partition partition name values less than value, partition partition name values less than value); 散列分区 在分区列上使用 hash 函数 是比范围分区更好的选择 如果不知道将有多少数据映射到指定的范围,散列分区非常有用 分区的数目应是 2 的幂 可以对散列分区进行命名,并将其存储在特定的表空间中 散列分区的语法: CREATE TABLE table_name( ... ) PARTITION BY HASH(column_list) PARTITIONSNO OF PARTITIONS ( PARTITION partition_name TABLESPACE tablespace_name, PARTITION partition_name TABLESPACE tablespace_name); 复合分区 使用范围分区方法对数据进行分区,并在每一个分区内使用散列分区方法将其划分为子分区 允许命名子分区 允许将子分区存储在特定的表空间 兼具范围分区和散列分区的优点 复合分区的语法: CREATE TABLE table_name( …… ) PARTITION BY RANGE(column_list) SUBPARTITION BY HASH(column_list) SUBPARTITIONS number_of_subpartitions STORE IN(tablespace_name_list, , ,……..) ( PARTITION parition_name VAL
显示全部
相似文档