ITPub博客

首页 > Linux操作系统 > Linux操作系统 > db_file_multiblock 设置多块读取来提高查询速度

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

原创 Linux操作系统 作者:安佰胜 时间:2011-06-29 10:11:51 0 删除 编辑

设置多块读取来提高查询速度
===================================
在全表扫描的时候可以实现多块读取从而提速
多块读取是由参数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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-08-26

  • 博文量
    215
  • 访问量
    616831