第一关表的连接还算过关第二关索引 经过上一次的洗礼和大家的帮助勉强凑合,但是有两点回答的不好 一是索引是以什么形式存储的,为什么用这样的形式存储 请大家指点第三关 事务 他举了个例子 事务A 其中A1 是把某个字段X update 为5,A2是把字段X update 为6,先做A1 后坐A2, 事务B
与A有个连接,问 事务B查询A的X字段 可能是什么,为什么。请指点!第四关 dogetlog 和ondogetlog 与transaction(事务)什么关联, 请赐教 (dogetlog 和ondogetlog我记不太清了,了解数据库的应该知道我说的什么意思 )以上问题并不要求一个人全部回答出来完,呵呵 今天下午在线等了(这些问题其实基本上不分MSSQlsever还是oracle什么的,但还是在贴出来了)
与A有个连接,问 事务B查询A的X字段 可能是什么,为什么。请指点!第四关 dogetlog 和ondogetlog 与transaction(事务)什么关联, 请赐教 (dogetlog 和ondogetlog我记不太清了,了解数据库的应该知道我说的什么意思 )以上问题并不要求一个人全部回答出来完,呵呵 今天下午在线等了(这些问题其实基本上不分MSSQlsever还是oracle什么的,但还是在贴出来了)
重做日志中存储操作信息,用于恢复操作
撤销日志中存储undo 信息,用于rollback,撤销操作。
一个事务提交的时候,都会往这两个日志中写入信息。只知道这些。。期待高手更加详细的说明
2.如果做完A1没有提交,再做A2,此时A再做提交,那么B查询结果是5;
应该是重做日志 redo log 和 撤销日志 undo log
重做日志中存储操作信息,用于恢复操作
撤销日志中存储undo 信息,用于rollback,撤销操作。
一个事务提交的时候,都会往这两个日志中写入信息。只知道这些。。期待高手更加详细的说明
[/Quote]
谢谢 应该是这两个操作。
A1和A2在同一个事务A中,如果事务A提交则事务B查询的是6;如果事务A未提交,事务B查询的是原来表里的数据。
在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个字节。