db_file_multiblock 设置多块读取来提高查询速度


设置多块读取来提高查询速度
===================================
在全表扫描的时候可以实现多块读取从而提速
多块读取是由参数db_file_multiblock_read_count来确定的
通过合理修改该参数能达到提高查询效率的目的
检查数据库版本
SQL> select * from v$version
  2  ;
BANNER                                                                         
----------------------------------------------------------------               
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod               
PL/SQL Release 10.2.0.1.0 - Production                                         
CORE 10.2.0.1.0 Production                                                     
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production                        
NLSRTL Version 10.2.0.1.0 - Production                                         
查看参数值
SQL> show parameter db_file_multiblock
NAME                                 TYPE        VALUE                         
------------------------------------ ----------- ------------------------------
db_file_multiblock_read_count        integer     4                             

创建测试表
SQL> create table an (id int) tablespace an;
表已创建。

准备数据
SQL> begin
  2  for i in 1..1000000 loop
  3  insert into an values(i);
  4  end loop;
  5  commit;
  6  end;
  7  /
PL/SQL 过程已成功完成。

查询
SQL> set timing on
SQL> select count(*) from an;
  COUNT(*)                                                                     
----------                                                                     
   1000000                                                                     
已用时间:  00: 00: 01.59
清除buffer_cache和library cache
SQL> alter system flush buffer_cache;
系统已更改。
已用时间:  00: 00: 00.89
SQL> alter system flush shared_pool;
系统已更改。
已用时间:  00: 00: 00.01
修改多块读取参数
SQL> alter system set db_file_multiblock_read_count=32;
系统已更改。
已用时间:  00: 00: 00.20
确认参数值
SQL> show parameter db_file_multiblock_read_count
NAME                                 TYPE        VALUE                         
------------------------------------ ----------- ------------------------------
db_file_multiblock_read_count        integer     32                            
重新执行查询
SQL> select count(*) from an;
  COUNT(*)                                                                     
----------                                                                     
   1000000                                                                     
已用时间:  00: 00: 00.64

查询时间由原来的1.59秒缩短到了0.64秒
当返回数据占表数据总量的比例比较高的时候,采用全表扫描,由于可以实现多块读取,查询的速度要比索引扫描要快

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13177610/viewspace-700942/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13177610/viewspace-700942/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值