Epert One-on-One Oracle阅读笔记6分析和总结.docxVIP

  • 1
  • 0
  • 约4.49万字
  • 约 66页
  • 2023-03-12 发布于湖北
  • 举报

Epert One-on-One Oracle阅读笔记6分析和总结.docx

Expert One-on-One Oracle 阅读笔记 第 6 章 数据库表 表的类型 堆组织表 索引组织表 聚簇表 散列聚簇表 嵌套表 临时表 对象表 一张表最多有 1000 列;表的行数理论上没有限制;表上索引个数可以是列的全排列数,而 且一次性能够使用 32 个;表的数量没有限制。 术语 高水位标记 High Water Mark 曾经包含数据的最右边的块。在全表扫描时,Oracle 将扫描高水标记一下的所有块,即使它们不含数据。TRUNCATE 将重新设置高水标记。 自由列表 Freelist 在 Oracle 中用来跟踪高水标记以下有空闲空间的块对象。保留在高水标记以上的块,只有 Freelist 为空时才能被用到。 并行更新数据时,配置多个 Freelist 能提高整体性能,代价是增加了存储空间。 PCTFREE 和 PCTUSED INITIAL, NEXT 和 PCTINCREASE 建议使用 Local Managed 表空间并设置 Extents 大小相等。而在没有使用 Local Managed 表空间的情况下,建议总是设置 INITIAL=NEXT 和 PCTINCREASE=0,以模拟 Local Managed 表空间的使用。 MINEXTENTS 和 MAXEXTENTS LOGGING 和 NOLOGGING INITRANS 和 MAXTRANS 堆组织表 索引组织表 数据在 IOT 中根据主键存储和排序。IOT 特别适用于 IR(信息检索)、空间和 OLAP 应用程序。 IOT 名义上是表,但它们的段实际上是索引段。要显示空间使用等就要先把 IOT 表的名字 转换成潜在的索引名。默认值是 SYS_IOT_TOP_object_id,object_id 是为表分配的内部对象 ID。推荐在建表时指定索引名。 主要应用 对只包含主键列的表:使用堆组织表将有 100%多的额外开销; 构建自己的索引结构:例如自己实现一个提供大小写不敏感查询的类似函数索引 CREATE TABLE emp AS SELECT * FORM scott.emp; CREATE TABLE upper_name (x$ename,x$rid, PRIMARY KEY(x$ename,x$rid) ) ORGANIZATION INDEX AS SELECT UPPER(ename),ROWID FROM emp; CREATE OR REPLACE TRIGGER upper_ename AFTER INSERT OR UPDATE OR DELETE ON emp FOR EACH ROW BEGIN IF (UPDATING AND (:OLD.ename||x:NEW.ename||x)) THEN DELETE FROM upper_name WHERE x$ename=UPPER(:OLD.ename) AND x$rid=:OLD.rowid; INSERT INTO upper_ename(x$ename,x$rid) VALUES (UPPER(:NEW.ename),:NEW.rowid); ELSIF (INSERTING) THEN INSERT INTO upper_ename(x$ename,x$rid) VALUES (UPPER(:NEW.ename),:NEW.rowid); ELSIF (DELETING) THEN DELETE FROM upper_name WHERE x$ename=UPPER(:OLD.ename) AND x$rid=:OLD.rowid; END IF; END; 需要加强数据的共同定位或希望数据按特定的顺序物理存储时 对应 Sybase 和 SQL Server 用户,这种情况会采用聚簇索引,而这可能达到 110%的额外开销,而 IOT 没有。经常用 BETWEEN 对主键或者唯一键进行查询,则会降低 I/O 数量。 主要选项 NOCOMPRESS/COMPRESS N 压缩 N 列,即对其中前 N 列相同的值进行压缩。从而能够允许更多数据进入 Buffer Cache, 代价是略多的 CPU 能量。 OVERFLOW PCTTHRESHOLD N/INCLUDING column_name 索引段的存储要密集于普通数据段(每块的行数要多),一般PCTUSED 是没有意义的。而OVERFLOW 子句允许设置另一个段以允许 IOT 中的行数据太大时溢出的这个段中。它再次引入PCTUSED,这样 PCTUSED 和 PCTFREE 对 OVERFLOW 段有对于堆组织表中相同的含义。而使用 方法是如下中的一种: PCTTHRESHOLD——当行中数据超出此百

文档评论(0)

1亿VIP精品文档

相关文档