80。表的类型
1.堆组织表(heap organized table)
最基本的数据库的表类型。以堆,也就是最简单的方式进行储存。
2.索引组织表(index organized table)
这些表按照索引结构存储。这就强制要求行本身有种某种物理顺序。也就是按照主键,或者索引。
3.索引聚簇表(index clustered table)
聚簇(clustered)是指一个或多个表组成的组。有相同聚簇的键值的所有行会相邻的地,物理的存储。聚簇使用B树建立索引
关于这里,我觉得是一个很有创意的想法。这里猜想,这样,可以逻辑的把一个对象拆成几个表。但是物理上是连续的,这样也就能够使得查询达到一张表的效果。真是很好的想法。
4散列聚簇表(hash clustered table)。
与上面相同。只是hash化了而已。
5.有序散列簇族表(sorted hash clustered table):oracle 10g中新增的。
书中的概念是,你的行按某个键值(如customer_id)散列。而与该键相关的一系列记录以某种有序的顺序表达。
逻辑分表,物理上是合在一起的?不敢确定。
6.嵌套表(nested table)。关系扩展的一部分。子父表的关系。只是子表不能够够独立。
7临时表(temporary table). 表的草稿
8.对象表(object table): 对象表基于某种对象模型。
9外部表(external table): 很天才的想法,平面文件当表
一些信息
1,最多1000列
其他觉得在特殊情况下,不然没什么必要记忆
81.术语—段
这个概念,我还是很朦胧的感觉。因为在我的印象中。段是存放对象的一个容器。其他也就没有什么了。
82.段空间管理。
手动管理(MSSM),遗留产物
需要管理FREELISTS,FREELISTGROUPS,PCTUSED和其他参数来控制如何分配。
自动段管理(ASSM)只需控制PCFREE
83,高水位线(high-water mark,HWM)
就是一个段中,已经被用过的块数。Delete语句不会使得HWM降低。但是truncate会把表的HWM重置为0.这里会影响查询时候的性能。因为查询会遍历HWM以下所有的块。
MSSM中,只有一个高HWM。而ASSM中多了一个低HWM。低HWM会根据数据的变化,而变化。
84,freelists
Oracle会在freelist中为有自由空间的对象维护HWM以下的块。(freelists组和freelist组在ASSM表空间中更本没有。仅MSSM表空间中使用这种技术)
看懂了一半吧。其实每个线程都会独占一个freelist。如果说,freelist的设置满了。那么其他线程只能等待。
Freelist并非越多越好。它是以空间换取速度的技术。
85PCTFREE和PCTUSED
PCTEREE告诉Oracle应该保留多少空间来完成将来的更新任务。默认是10%
PCTUSED告诉Oracle当前不自由的一个块上自由空间百分比需要达到多少才能使他变得自由
说句实话,没有看明白。设置这些有注意MSSM两个都很重要
对于ASSM只有PCTFREE比较重要
高PCTFREE 低PCTUSED。适用于比较于行的大小会经常变化的。
反之,则是不会经常变化的。
85 行迁移
一个块中,行不够。就要转移到其他块上。
其一,原来块A,会留下一个标记,指向新B的地方。
其二,如果新地方B还要迁移。那么在原地方A的标记,会指向之后迁移到的地方C
86.initrans和MAXTRANS
initrans初始事务大小2.之前说过。但是具体也忘记了。会让事务延迟。
MAXTRANS,最大的事务数。10G被废了。默认为255