Oracle高并发系列1:DML引起的常见问题及优化思路
|
解决思路:? ?
背景知识: Oracle在索引split时中寻找可复用的free block的过程如下: Oracle不会一开始就让index segment申请分配新的空间(这会造成index segment的空间过度增长),而是到该index segment的其它地方搜索是否存在可用的Free Block,这些Free Block的要求是status是75%-100% Free的,server process会扫描这些75%-100% Free的block 并确认这些block 实际上是100%空的,如果找到100% Free Block则使用;如果没有则继续搜索,直到所有候选block都被检查过,这个行为叫做 probes on index block reclamation.每次寻找空块并failed,oracle就会增加这个统计指标: “failed probes on index block reclamation”.Oracle内部机制会控制要找多少次,不会去FULL SCAN所有index block的,failed超过一定次数后就会申请分配新的block. 不能重用的原因有2个:??
在这个过程中,Oracle还有机会找到的block其实已经是索引结构中的一个非空block,但是Oracle只会在splittingand relinking to index structure之后才会发现这个block其实是illegal的选择,这个时候Oracle会回滚这个操作,这个统计记录在‘transaction rollback’ in v$sysstat,然后继续寻找另外一个block. (编辑:网站开发网_马鞍山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

