Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304416
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站网址导航为大家提供关于数据库教程相关的教程网站知识。

Oracle数据块实现原理深入解读FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

下午在学习oracle 10g r2 concepts,在这留一笔。,Oracle对网站数据库数据网站网站文件(datafile)中的存储空间进行管理的单位是数据块(data block)。数据块是网站数据库中最小的(逻辑)数据单位。与数据块对应的,所有数据在操作办法系统级的最小物理存储单,网站数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE指定的。除此之外,用户还可以指定五个非标准的数据块容量(nonstandardblock size)。数据块容,数据块结构,在Oracle中,不论数据块中存储的是表(table)、索引(index)或簇表(clustered data),其内部结构都是类似的。块结构图如下所示:,本图显示了数据块的各个组成部分,包括:数据块头(包括标准内容和可变内容)(common and variable header),表目录区(table directory),行目录区(row dire,数据块头(包括标准内容和可变内容),数据块头(header)中包含了此数据块的概要信息,例如块地址(block address)及此数据块所属的段(segment)的类型(例如,表或索引)。,表目录区,假如如果一个数据表在此数据块中储存了数据行,那么数据表的信息将被记录在数据块的表目录区(table directory)中。,行目录区,此区域包含数据块中存储的数据行的信息(每个数据行片断(row piece) 在行数据区(row data area)中的地址)。[一个数据块中可能保存一个完整的数据行,也可能只保存数据行的一部分 ,所,当一个数据块(data block)的行目录区(row directory)空间被使用后,即使数据行被删除(delete),行目录区空间也不会被回收。举例来说,当一个曾经包含50条记录的数据块被清空后,管理开销,数据块头(data block header),表目录区(table directory),行目录区(rowdirectory)被统称为管理开销(overhead)。其中 有些开销的容量是固定的;而有,行数据,数据块(data block)中行数据区(row data)包含了表或索引的实际数据。一个数据行可以跨多个数据块。,可用空间区,在插入新数据行,或在更新数据行需要更多空间时(例如,原来某行最后一个字段为空(trailing null),现在要更新为非空值),将 使用可用空间区(free space)中的空间。假如如果一个数据块(d,可用空间管理,可用空间可以被手动或自动管理,网站数据库中,每个段(segment)的可用空间可以被自动管理。段内的可用/已用空间以位图(bitmap)形式记录,这与可用块以列表相关方式的管理不同。段空间自动管理(Automatic segment-sp,● 易于使用● 空间利用效率更高,尤其针对每行数据容量差异大的表(或其他对象)● 能够更好地针对当前数据的情况实时调整● Better multi-instance behavior. in term,用户可以在创建一个本地管理的表空间(locally managed tablespace)时选择自动段空间管理(automatic segment-space management)功能。这样在此表空,数据块可用空间的有效性及网站seo优化,有两种SQL数据库语句可以增加数据块中的可用空间:分别是 DELETE 数据库语句,和将现有数据值更新为占用容量更小值的 UPDATE 数据库语句。在以下两种条件下,上述两中操作办法释放的空间可以被后续的 INSERT 语,● 假如如果 INSERT 数据库语句与上述两种操作办法在同一事务(transaction)中,且位于释放空间的数据库语句之后,那么 INSERT 数据库语句可以使用被释放的空间。● 假如如果 INSERT 数据库语句与释放空间的数据库语句在,数据块(data block)中被释放出的空间未必与可用空间区(free space)相连续。Oracle在满足以下条件时才会将释放的空间合并到可用空间区:(1)INSERT 或 UPDATE 数据库语句选,行链接(Row Chaining)及行迁移(Row Migrating),有两种情况会导致表中某行数据过大,一个数据块(data block)无法容纳。第一种情况,当一行数据被插入时一个数据块就无法容纳。在这种情况下Oracle将这行数据存储在段内的一个数据块链(chain,第二种情况,原本存储在一个数据块(data block)内的数据行,因为更新操作办法导致长度增长,而所在数据块的可用空间也不能容纳增长后的数据行。在这种情况下,Oracle将此行数据迁移(migrate),当数据行发生链接(chain)或迁移(migrate)时,对其访问将会造成 I/O 性能降低,因为Oracle为获取这些数据行的数据时,必须访问更多的数据块(data block)。,PCTFREE,PCTUSED,及行链接(Row Chaining),在手动管理的表空间(manually managed tablespaces)中,用户可以使用PCTFREE 和 PCTUSED 这两个存储管理参数来控制对某段(segment)进行插入和更新操作办法时,,PCTFREE 参数,PCTFREE 参数用来设置一个数据块(data block)中至少需要保留(reserve)多少可用空间(百分比值),为数据块中已有数据更新时可能发生的数据量增长做准备。例如,当用户用 CREATE,PCTFREE 20,这个参数设定了此表对应的数据段(data segment)中的每个数据块(datablock)至少保留20%的可用空间,以备块中已有数据更新时使用。只要数据块中行数据区与数据块头的容量之和不超过数据块,下图说明了PCTFREE 的作用:,PCTUSED 参数,PCTUSED 参数用于决定一个数据块(data block)是否可被用于插入新数据,她的依据是数据区(row data)与数据块头(overhead)的容量之和占数据块全部容量的最大百分比。当一个数,PCTUSED 40,在例子中,当此表的某数据块占用容量比例高于40%时,Oracle不会将此数据块用于插入新数据行(假设此数据块的可用空间曾经低于 PCTFREE 的限定),PCTUSED 的作用,PCTFREE 和 PCTUSED 如何协同发挥作用,PCTFREE 和 PCTUSED 共同作用可以网站seo优化数据块(data block)的空间使用。,使用 PCTFREE 和 PCTUSED 参数管理数据块的可用空间,上图说明了 PCTFREE 和 PCTUSED 如何共同作用以管理数据块(data block)可用空间的使用。,在第一步中,数据块占用空间比例小于80%时才能插入新数据,因为PCTFREE 参数限定必须保留20%的可用空间用于块内已有数据的更新。在第二步中,对数据块中已有数据的更新操作办法可以使用数据块中的保留空间,在新分配的数据块中(data block),可用于插入(insert)数据的空间等于数据块总容量减去数据块头(block overhead)再减去预留可用空间(PCTFREE)。而更新(update),在每个数据段(data segment)与索引段(index segment)中,Oracle管理着一个或多个可用块列表(free list)--其中列出了所有属于此段的数据扩展(extent),且可,当用户提交了 DELETE 或 UPDATE 数据库语句后,Oracle处理数据库语句并检查相关数据块中的占用空间比例是否小于 PCTUSED 的规定。假如如果满足,那么这个数据块就被放入当前事务(transactiFeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

1.基本概念
两种功能:完成由网站数据库的完整性约束难以完成的复杂业务规则的约束;监视网站数据库的各种操作办法,实现审计功能。
触发器分为:DML触发器(对表或视图执行DML操作办法时触发),INSTEAD OF触发器(只定义在视图上,替代实际的操作办法数据库语句),系统触发器(对网站数据库系统进行操作办法时触发,如DDL数据库语句、启动或关闭网站数据库等)
触发事件: 上述触发器中括号内容都是触发事件。
触发条件: WhEN子句
触发对象:包括表、视图、模式、网站数据库。
触发操作办法:触发器自动执行的程序。
触发时机:触发器相对操作办法执行的时间,BEFORE/AFTER
条件谓词:INSERTING(触发器事件为INSERT时为真),UPDATING,DELETING
触发子类型:行触发和数据库语句触发,触发中的new和old表。
2.创建触发器

复制具体相关代码 具体相关代码如下:FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


CREATE OR REPLACE TRIGGER<触发器名>
FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


触发条件
触发体

复制具体相关代码 具体相关代码如下:FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


CREATE TRIGGER my_trigger --定义一个触发器my—trigger
BEFORE INSERT or UPDATE of TID,TNAME on TEAChERS
FOR each row
WhEN(new.TNAME='David') --这一部分是触发条件
DECLARE --下面这一部分是触发体
teacher_id TEAChERS.TID%TYPE;
INSERT_EXIST_TEAChER EXCEPTION;
BEGIN
SELECT TID INTO teacher_id
FROM TEAChERS
WhERE TNAME=new.TNAME;
RAISE INSERT_EXIST_TEAChER;
EXCEPTION --异常处理也可用在这里
WhEN INSERT_EXIST_TEAChER ThEN
INSERT INTO ERROR(TID,ERR)
VALUES(teacher_id,'the teacher already exists!');
END my triqqer;
FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


3.执行触发器
自动执行

复制具体相关代码 具体相关代码如下:FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


CREATE TRIGGER my_trigger1
AFTER INSERT or UPDATE or DELETE on TEAChERS
FOR each row;
DECLARE
info ChAR(10);
BEGIN
IF inserting ThEN --假如如果进行插入操作办法
info:='INSERT';
ELSIF updating ThEN --假如如果进行修改操作办法
info:='Update';
ELSE--假如如果进行删除操作办法
info:='Delete';
END IF;
INSERT INTO SQL_INFO VALUES(info); --记录这次操作办法信息
END my_trigger1;
FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


4.删除触发器

复制具体相关代码 具体相关代码如下:FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


DROP TRIGGER my_trigger;
FeEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。

标签:

分享到:

  网友投稿

注册时间:

网站:0 个   APP:0 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304416

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市