- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
锁和表分区 第三章 回顾 目标 掌握锁定的概念及其实现用法 掌握表分区的概念及其实现方法 锁定概念 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
文档评论(0)