您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 北大青鸟第三章锁和表分区
Version3.0锁和表分区第三章2回顾•Select语句的用途•在SQL*Plus中可以使用各种类型的操作符•使用集合操作符可以合并查询•SQL*PLUS函数被归类为单行函数和分组函数•Rollup和Cube操作符用于查找表达式的聚集和超级聚集•临时表中的数据在用户事务处理期间可持续使用3目标•掌握锁定的概念及其实现用法•掌握表分区的概念及其实现方法4锁定概念8-1•允许或拒绝资源访问的一种机制•资源可以是特定行或整个表•控制对数据的并发访问•防止在同时访问相同资源的用户之间出现破坏性的交互操作5•锁定类型―行级锁―表级锁•行级锁―行被排他锁定―在某行的锁被释放之前,其他用户不能修改此行―使用commit或rollback命令释放锁―Oracle通过使用INSERT、UPDATE和SELECT…FORUPDATE语句自动获取行级锁锁定概念8-26•SELECT…FORUPDATE子句―在表的一行或多行上放置排他锁―用于防止其他用户更新该行―可以执行除更新之外的其他操作锁定概念8-37•FORUPDATEWAIT子句―Oracle9i中的新增功能―防止无限期地等待锁定的行―允许对锁的等待时间进行更多的控制―等待间隔必须指定为数值文字―等待间隔不能是表达式、赋值变量或PL/SQL变量锁定的概念8-48•表级锁―保护表的数据―在多个用户同时访问数据时确保数据的完整性―可以设置为三种模式:共享、共享更新和排他•语法:Locktabletable_nameinmode;锁定概念8-59•共享锁―锁定表―仅允许其他用户执行查询操作―不能插入、更新和删除―多个用户可以同时在同一表中放置此锁锁定概念8-610•共享更新锁―锁定要被更新的行―允许其他用户同时查询、插入、更新未被锁定的行―在SELECT语句中使用“FORUPDATE”子句,可以强制使用共享更新锁―允许多个用户同时锁定表的不同行锁定概念8-711•排他锁―与其他两种锁相比,排他锁是限制性最强的表锁―仅允许其他用户查询数据―不允许执行插入、删除和更新操作―在同一时间仅允许一位用户在表上放置排他锁―共享锁与此相反锁定概念8-812•分区的概念是指可以将表拆分为几个部分•在数据仓库应用程序中非常有用•根据键值范围对表进行拆分•表的每个部分称为“分区”•分区被独立存储和管理•通过引用逻辑表名称进行查询和更新表分区13-113•分区方法―分区类型范围分区散列分区复合分区列表分区表分区13-214•范围分区―根据列值的范围将行映射到分区―由表的分区规范进行定义:PARTITIONBYRANGE(column_list)―由每个单独分区的分区规范进行定义:VALUESLESSTHAN(value_list)―其中column_list是列的有序列表―value_list是column_list中列值的有序列表表分区13-315范围分区的语法:createtabletable_name(column_namedatatype,column_namedatatype,….)partitionbyrange(column_name)(partitionpartitionnamevalueslessthanvalue,partitionpartitionnamevalueslessthanvalue);表分区13-416•散列分区―在分区列上使用hash函数―是比范围分区更好的选择―如果不知道将有多少数据映射到指定的范围,散列分区非常有用―分区的数目应是2的幂―可以对散列分区进行命名,并将其存储在特定的表空间中表分区13-517散列分区的语法:CREATETABLEtable_name(...)PARTITIONBYHASH(column_list)PARTITIONSNOOFPARTITIONS(PARTITIONpartition_nameTABLESPACEtablespace_name,PARTITIONpartition_nameTABLESPACEtablespace_name);表分区13-618•复合分区―使用范围分区方法对数据进行分区,并在每一个分区内使用散列分区方法将其划分为子分区―允许命名子分区―允许将子分区存储在特定的表空间―兼具范围分区和散列分区的优点表分区13-719复合分区的语法:CREATETABLEtable_name(……)PARTITIONBYRANGE(column_list)SUBPARTITIONBYHASH(column_list)SUBPARTITIONSnumber_of_subpartitionsSTOREIN(tablespace_name_list,,,……..)(PARTITIONparition_nameVALUESLESSTHAN(VALUE)(SUBPARTITIONpartition_nameTABLESPACEtablespace_name,...SUBPARTITIONpartition_nameTABLESPACEtablespace_name,SUBPARTITIONpartition_nameTABLESPACEtablespace_name)PARTITIONpartition_nameVALUESLESSTHAN(VALUE)…………);表分区13-820•列表分区―基于PARTITIONBYLIST中指定的分区键对表进行分区―明确地控制行到分区的映射―指定分区键的离散值―不同于范围分区和散列分区表分区13-921•将记录插入已分区表―记录被存储到表的分区中―基于指定的分区键执行―与定义的分区边界进行比较―示例:SQLINSERTINTOord_mastVALUES('o001','12-jan-96','V001','p','12-jan-97');SQLINSERTINTOord_mastVALUES('o010','12-feb-99','V002','c','15-mar-99');SQLINSERTINTOord_mastVALUES('o012','12-feb-99','V002','c','15-mar-99');表分区13-1022•分区维护操作―修改已分区表的一个分区―划分为两类事件:计划事件-定期删除最旧分区的操作非计划事件–解决应用程序或系统问题表分区13-1123•维护分区―各种分区维护操作如下:添加分区移动删除结合截断拆分合并交换表分区表分区13-1224•本地域索引•Oracle9i中引入的新功能―在Oracle9i之前的版本中,不能为表的每个分区定义本地域索引―在Oracle9i之前的版本中,仅可以定义非分区的全局域索引―现在,可以为范围分区表上的分区定义本地域索引―其他类型的分区不支持此功能表分区13-1325•锁用于在用户之间控制对数据的并发访问•锁有两种类型-行级锁和表级锁•行级锁用于指定的行•表级锁用于整个表•SELECT…FORUPDATEOF子句用于锁定指定的行总结-126•FORUPDATEWAIT子句用于指定获取锁的时间间隔•表级锁包括共享模式、共享更新模式和排他模式•分区是将一个表拆分为物理上独立的几个部分•类型-范围分区、散列分区和复合分区•范围分区-基于键值范围•散列分区-基于hash函数•分区域索引是Oracle9i中引入的新功能•允许在范围分区表上定义本地域索引总结-2
本文标题:北大青鸟第三章锁和表分区
链接地址:https://www.777doc.com/doc-3612998 .html