Database

Notes on ‘Expert Oracle’ — No.11.3: 索引 — BitMap 索引

BitMap 索引   1.基本上用于OLAP,一般不适用于OLTP环境   2.结构      BitMap Index:  一个索引条目对应多行      B* Index: 一个索引条目只对应一行   3.一个条目对应多行 => 因此只适用于 Distinct Cardinality 较低的情况,比如“性别字段”只有M/F这两种取值   4.不适用于“并发写”很频繁的场合。锁住一行数据 => 锁住整个索引条目 => 锁住该条目下的所有数据行 => 并发性极弱 BitMap Joined Index   1.也是BitMap索引的一种   2.只不过表A的索引建在表B的某个字段上,这样可以提升连接查询的效率。

Notes on ‘Expert Oracle’ — No.11.4: 索引 — Tips

1.B* 索引不会为 全null 值建立索引条目    所以 select * from T where x is null 不会使用索引 (如果索引建在x字段上)    不过, 如果满足以下两个条件, 仍会用到索引        a. 索引建在 (x,y) 上        b. y 被定义为Not Null字段 2. 外键上要不要索引?    a.一般来说都要,否则的话      i.如果修改父表的主键值或者删除父表中一行记录,会导致整个子表被锁     ii.父表中的On Delete Cascade被触发时 也会导致全表扫描    iii.按父表中的值查询子表记录时,由会导致对子表的全表扫描    b.相反地,如果同时满足以下所有条件,就不用加索引        i.不会修改父表主键值且不会删除父表记录      ii.不存在从父表到子表的连接 3.为什么我的索引没有被用上?    i. 索引建在 (x,y)复合字段上,但查询谓词只查了x   …

Notes on ‘Expert Oracle’ — No.11.4: 索引 — Tips Read More »

Notes on ‘Expert Oracle’ — No.11.2: 索引 — B*索引

1.结构   a.类似于二叉树   b.高度平衡:所有叶结点都在树的同一层次上   c.一般来说高度是2或者3 (需要2至3次I/O) 2.When B*?   a.如果与索引有关的查询只返回少数几行数据,则可以用B* 索引   b.如果与索引有关的查询会牵涉到多行数据,但索引本身就可以回答这类查询(如 select count(*)),则也可以用B*索引。

Notes on ‘Expert Oracle’ — No.10.4: Table — Nested table & Temp table

Nested Table   1.Can be used for persistence or PL/SQL programming, but mainly used for programming.   2.Can be used as the type of another table’s column   3.Can’t referece any table for constraints, including itself. Temp Table:    1.There is no concurrency problem for temp tables.  Because two sessions will never share one copy. …

Notes on ‘Expert Oracle’ — No.10.4: Table — Nested table & Temp table Read More »

Notes on ‘Expert Oracle’ — No.10.3: Table — 聚簇表

1.引子 问题:我经常连接表A和表B,除了建立表索引外吗,还有别的优化手段吗? 答案:有。如果A和B相应的一组数据在同一个块中,那么查询时就不需要取出那么多块了,I/O效率会高很多。 2.什么是聚簇   a. A和B的同组数据放在同一个块中,如果A和B经常连结   b. 同一张表中共享同一列值的行尽量放在同一个块中 3.一个聚簇块应该放几行数据?   要恰当地设置这个值。     a.如果行数太少,则会浪费块的空间     b.如果行数太多,则可能会导致 块 不能容纳整行数据,而只能通过串链解决问题。串链太多就适得其反了。 4.什么时候应该用聚簇    以读为主、且主要使用索引读、并且经常要进行连接查询的一组表应该放在同一个聚族中。

Notes on ‘Expert Oracle’ — No.10.1: Table — Segment Space Management

1. Tow modes of Segment Space Management    a. Automatic — ASSM    b. Manual    — MSSM We only care about ASSM here. 2.High-water Mark 2.1 What is it for ? Question:  I’ve deleted all the data from the table by using "delete from …". Why does "select count(*) from …" take a long time? …

Notes on ‘Expert Oracle’ — No.10.1: Table — Segment Space Management Read More »

Notes on ‘Expert Oracle’ — No.9.6: Redo&Undo — Undo Log

1. Amount of Undo Log     Delete > Update > Insert     Operations on Indexed Columns > Operations on Non-indexed 2. What can cause "Snap Too Old"  exception?  => The undo segment is too small 3. How to make the undo segment not so small?    a. Enlarge it, of course       i.Enlarge UNDO_RETENTION, which …

Notes on ‘Expert Oracle’ — No.9.6: Redo&Undo — Undo Log Read More »