第一关表的连接还算过关第二关索引 经过上一次的洗礼和大家的帮助勉强凑合,但是有两点回答的不好 一是索引是以什么形式存储的,为什么用这样的形式存储 请大家指点第三关 事务 他举了个例子 事务A 其中A1 是把某个字段X update 为5,A2是把字段X update 为6,先做A1 后坐A2, 事务B
与A有个连接,问 事务B查询A的X字段 可能是什么,为什么。请指点!第四关 dogetlog 和ondogetlog 与transaction(事务)什么关联, 请赐教 (dogetlog 和ondogetlog我记不太清了,了解数据库的应该知道我说的什么意思 )以上问题并不要求一个人全部回答出来完,呵呵 今天下午在线等了(这些问题其实基本上不分MSSQlsever还是oracle什么的,但还是在贴出来了)

解决方案 »

  1.   

    dogetlog 和ondogetlog 没听过期待高手解决..
      

  2.   

    啊 第一次 到oracle这提问题没人 回答  自己顶下
      

  3.   

    应该是重做日志 redo log 和 撤销日志 undo log
    重做日志中存储操作信息,用于恢复操作
    撤销日志中存储undo 信息,用于rollback,撤销操作。
    一个事务提交的时候,都会往这两个日志中写入信息。只知道这些。。期待高手更加详细的说明
      

  4.   

    1.如果做完A1提交,再做A2,并且也提交了,那么B查询的结果是6; 
    2.如果做完A1没有提交,再做A2,此时A再做提交,那么B查询结果是5;
      

  5.   


    应该是重做日志 redo log 和 撤销日志 undo log
    重做日志中存储操作信息,用于恢复操作
    撤销日志中存储undo 信息,用于rollback,撤销操作。
    一个事务提交的时候,都会往这两个日志中写入信息。只知道这些。。期待高手更加详细的说明
    [/Quote]
    谢谢 应该是这两个操作。
      

  6.   


    A1和A2在同一个事务A中,如果事务A提交则事务B查询的是6;如果事务A未提交,事务B查询的是原来表里的数据。
      

  7.   

    继续顶 就不信还有咱CSDN解决不了的问题,在线等
      

  8.   

    索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高效率而引入,是一个独立于表的对象,可以存放在与表不同的表空间中。索引记录中存有索引关键字和指向表中数据的指针(地址)。对索引进行的I/O操作比对表进行操作要少很多。索引一旦被建立就将被Oracle系统自动维护,查询语句中不用指定使用哪个索引。查询分类可以按逻辑设计和物理实现来分类。索引逻辑分类单列索引:基于一列的操作多列索引:组合索引,最多为32列。组合索引的列不一定与表中列顺序相同。惟一索引:列的值各不相同。非惟一索引:列的值允许相同。基于函数的惟一索引:利用表中一列或多列基于函数表达式所创建的索引。既可以是B-树,也可以是位图索引。索引物理分类分区或非分区索引,非分区既可以是B-树,也可以是位图索引。B-树:包括正常或反转关键字索引,反转关键字在数据库优化中介绍。位图索引索引的存储方式虽然所有索引都使用 B 树结构,但术语“B 树索引”通常与存储每个关键字的行标识列表的索引关联。B 树索引结构至上而下,是根结点、分枝结点及叶子结点,叶子结点中有指向表中数据行的索引行。叶子结点被双向链表在一起,以方便按索引关键字升序或降序扫描。索引的顶部为根,其中包含指向索引中下一级掂,下一级为分枝块,分枝块又指向索引中下一级的块,最低一级为叶节点,其中包含指向表行的索引项。叶块为双重链接,有助于按关键字值的升序和降序扫描索引。索引项叶节点的格式索引项由以下三部分组成:? 项标题(entry header),存储列数和锁定信息? 关键字列的“长度- 值”(length-value pairs) ,必需成对出现,定义了列长度,紧跟在列长度之后的就是列的值。? 行的行标识(RowID), 包含关键字值。索引项叶结点弟地征在非分区表上的 B 树索引中:? 如果多行倪有相同的关键字值,并且索引没有被压缩,则关键字值重复存放。? 没有索引项与所有关键字列都为 NULL 的行对应,即如果某列值为Null,则不存储相应的索引项。如果Where子句中索引的所在列值为null,Oracle将不使用索引进行全表扫描。? 因为所有行都属于同一段,所以使用受限行标识指向表中的行,使用RowID可以节省索引存储空间。DML操作对索引的影响当在表上执行 DML 操作时,Oracle 服务器将自动维护所有的索引,下面解释 DML命令对索引的影响:? 插入(Insert)操作导致在适当的块中插入索引项。? 删除(Delete)行只导致逻辑删除索引项,删除的行所用的空间不能用于新项,直到删除块中的所有项。? 更新(Update)操作将选删除,再插入,除了在创建时,其它任何时候PCTFREE 设置对索引都没有影响,即使索引块空间少于 PCTFREE 指定的空间,仍可以向索引块添加新项。
      

  9.   

    索引是以什么方式存储的?这个问题,要看是什么类型的索引。
    在Oracle里面,主要有B*树索引、位图索引,当然还有其他的反向键索引,哈希索引,那些仅当做补充。主要还是要说清楚有B*树索引和位图索引。
    B树索引是一个典型的树结构,其包含的组件主要是:
    1)     叶子节点(Leaf node):包含条目直接指向表里的数据行。
    2)     分支节点(Branch node):包含的条目指向索引里其他的分支节点或者是叶子节点。
    3)     根节点(Root node):一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。对于分支节点块(包括根节点块)来说,其所包含的索引条目都是按照顺序排列的(缺省是升序排列,也可以在创建索引时指定为降序排列)。每个索引条目(也可以叫做每条记录)都具有两个字段。第一个字段表示当前该分支节点块下面所链接的索引块中所包含的最小键值;第二个字段为四个字节,表示所链接的索引块的地址,该地址指向下面一个索引块。在一个分支节点块中所能容纳的记录行数由数据块大小以及索引键值的长度决定。比如从上图一可以看到,对于根节点块来说,包含三条记录,分别为(0 B1)、(500 B2)、(1000 B3),它们指向三个分支节点块。其中的0、500和1000分别表示这三个分支节点块所链接的键值的最小值。而B1、B2和B3则表示所指向的三个分支节点块的地址。
          对于叶子节点块来说,其所包含的索引条目与分支节点一样,都是按照顺序排列的(缺省是升序排列,也可以在创建索引时指定为降序排列)。每个索引条目(也可以叫做每条记录)也具有两个字段。第一个字段表示索引的键值,对于单列索引来说是一个值;而对于多列索引来说则是多个值组合在一起的。第二个字段表示键值所对应的记录行的ROWID,该ROWID是记录行在表里的物理地址。如果索引是创建在非分区表上或者索引是分区表上的本地索引的话,则该ROWID占用6个字节;如果索引是创建在分区表上的全局索引的话,则该ROWID占用10个字节。
      

  10.   

    图片地址:http://space.itpub.net/batch.download.php?aid=5199