WEB开发网
开发学院数据库Oracle 为1.7亿张记录表创建快速索引 阅读

为1.7亿张记录表创建快速索引

 2007-05-10 12:16:25 来源:WEB开发网   
核心提示: SQL> select segment_name,sum(bytes/1024/1024) from user_segments where segment_name ='STAT_SUBMIT_CENTER' group by segment_name;SEGMEN
SQL> select segment_name,sum(bytes/1024/1024) from user_segments where segment_name ='STAT_SUBMIT_CENTER' group by segment_name;SEGMENT_NAME           SUM(BYTES/1024/1024)-------------------------------- --------------------STAT_SUBMIT_CENTER               17234

表的记录数:

SQL> set timing onSQL> select count(*) from STAT_SUBMIT_CENTER; COUNT(*)---------- 170341007Elapsed: 00:14:18.60

还有这个表上的索引情况如下:

table  STAT_SUBMIT_CENTER       17234 Mindex  IDX_SUBCEN_ADDRUSER       5155 M    ADDRUSER  PK_STAT_SUBMIT_CENTER     10653 M    MSGDATE,ADDRUSER,MSGID

然后查看一些数据库参数情况:

2. 需要考虑的几个方面

1)创建的索引需要几个G的磁盘空间

2)创建索引需要排序,使用pga_aggregate_target,要把这个值从200M加大到2G

3)如果内存不够,需要temp表空间,把temp表空间加大到8G。itpub上有一个帖子说过,15亿条记录用了34G空间。

4)在线创建,时间会比较长。讨论后,停这个表的操作,非online创建。

3. 实际操作过程

1)数据文件够,不扩展;temp数据文件扩展:

alter database tempfile '/bgdata/oracle/temp01.dbf' resize 8192m;

2)在workarea_size_policy=AUTO的情况下,改pga_aggregate_target=2048m,对于串行操作,一个session能使用的pga=MIN(5%PGA_AGGREGATE_TARGET,100MB),这样可以使得pga用到最大的值:

alter system set pga_aggregate_target=2048m;

3)因为这是一个比较长的过程,所以写脚本让后台运行:

上一页  1 2 3 4  下一页

Tags:记录表 创建 快速

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接