日归档:2014 年 3 月 20 日

kcfis的相关隐含参数

记录一下kcfis的相关隐含参数:

发表在 Exadata, 内部机制 | 留下评论

Exadata上cell如何判断何时进行智能扫描?————2.在非Exadata环境的测试

创建测试表: 使用gdb跟踪: ———— 回到 session 2 —————- (gdb) c Continuing. 继续跟踪 ———— 回到 session 1 —————- 执行: LUNAR@lunar>select count(1) from lunar; ……. ———— 回到 session 2 继续跟踪 —————- ———— 回到 session 1 —————- 回到session 1,此时已经返回了结果: LUNAR@lunar>select count(1) from lunar; COUNT(1) … 继续阅读

发表在 内部机制 | 留下评论

Exadata上cell如何判断何时进行智能扫描?————1.在Exadata环境的测试

我们知道,SmartScan的先决条件是下面3个: 1,必须是对象上的全表扫描或者全索引快速扫描(TABLE ACCESS FULL或INDEX FAST FULL SCAN) 2,必须使用直接路径读取(Direct Path Read)。SmartScan的数据流是无法缓存在SGA缓冲池中的。直接路径读取可以串行,也可以并行,缓冲在进程的PGA(heap)中。 3,对象必须存储在Exadata的Cell节点上 . 在Exadata环境的数据库节点上: 1,ASM实例使用libcell11.a这个动态库跟cell节点通信, 2,数据库实例使用kcfis( Kernel File Intelligent Storage )执行SmartScan。 3,Diskmon进行心跳监控,I/O fencing和IORM 。 . 而cell节点上,主要是cellsrv(多线程的服务)完成相关的IO请求的操作(MS主要是监控,RS是重启其他进程) . 并且,对于Linux环境,Exadata和非Exadata上面安装的Oracle介质并无却别,那么有两个问题: 1,这两个环境是上执行计划为什么会不同(一个是全表扫描,一个是智能扫描)? 2,cell在收到数据库节点的请求后,怎么判断是否执行只能扫描呢? . 首先,在Exadata上大体有下面3种读取数据块的方式: 1,普通的block读:从磁盘读取数据块,读入到SGA 2,直接路径读:从磁盘读取数据块,读入PGA 3,智能扫描:由cell直接从底盘读取,读入PGA . 而在非Exadata环境,通常只有前两种。 我们分别用gdb跟踪一下。 首先在我的Exadata VM上测试: 创建测试表: … 继续阅读

发表在 内部机制 | 留下评论