设为首页 收藏本站
查看: 517|回复: 0

[经验分享] 创建索引ORACLE 需要做的工作

[复制链接]

尚未签到

发表于 2016-7-29 10:58:16 | 显示全部楼层 |阅读模式
  
一. 先来看一下创建索引要做哪些操作:
1. 把index key的data 读到内存
==>如果data 没在db_cache 中,这时候很容易有大量的db file scatter read wait

2. 对index key的data 作排序
==>sort_area_size 或者pga_aggregate_target 不够大的情况下,需要做 disk sort, 会有大量的driect path read/write , 另外,消耗大量CPU Time

3. 创建新的index segment , 把排过序的index data 写到所创建的index segment 里面
==>如果index 很大,那么,有时也会有redo log 相关等待,如:
log buffer space ,log file sync , log file parallel write 等

所以,在建大表索引时,可以增大pga,增大temp tablepace,并且用nologging或并行选项。
如:
create index idx_logs on logs(time) nologging parallel 4;
 
并行度一般看CPU 个数。当然在CPU 比较空闲的情况下可以多并行几个。对于单CPU 不建议用并行,这样反而会增加创建时间。也可以根据v$session_wait 的资料,做针对性的tuning , 这样可以降低点时间。
 
补充知识:
查看cpu 信息:more /proc/cpuinfo
查看内存信息:more /proc/meminfo
查看操作系统信息:more /etc/issue
 
有关索引概念性的东西,请参考我的Blog:
 
Oracle 索引 详解
http://blog.csdn.net/tianlesoftware/archive/2010/03/05/5347098.aspx
 
 
 
 
 
二. 测试
 
自己也测试了下。测试环境:Oracle 11g R2, win7 64bit ,CPU T6670 2.2G 双核, 内存:4G。 
 
 
1. 查看表的数据量:
SQL> select count(*) from custaddr;
 
  COUNT(*)
----------
   7230464
 
2. 查看现有索引:
SQL> select index_name,index_type from user_indexes where table_name='CUSTADDR';
 
INDEX_NAME                     INDEX_TYPE
------------------------------ ---------------------------
PK_CUSTADDR_TP_723             NORMAL
IX_CUSTADDR_ADDRABB_TP         NORMAL
IX_CUSTADDR_TEAMID_TP          NORMAL
IX_CUSTADDR_CUSTID_TP          NORMAL
IX_CUSTADDR_COMPABB_TP         NORMAL
IX_CUSTADDR_AREACODE           NORMAL
IX_CUSTADDR_ADDR_TP            NORMAL
 
已选择7行。

3. 删除索引:IX_CUSTADDR_CUSTID_TP

SQL> drop index IX_CUSTADDR_CUSTID_TP ;
索引已删除。

4. 默认方式创建索引:

SQL> SET timing on;
SQL> CREATE INDEX  IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID );
索引已创建。
已用时间:  00: 00: 48.37
单位:s

5. 用nologging 模式:
SQL> drop index IX_CUSTADDR_CUSTID_TP ;
索引已删除。
已用时间:  00: 00: 00.09
SQL> CREATE INDEX  IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID )  NOLOGGING;
索引已创建。
已用时间:  00: 00: 34.46
 
6. Nologging+ parallel 模式
SQL> drop index IX_CUSTADDR_CUSTID_TP ;
索引已删除。
已用时间:  00: 00: 00.17
SQL> CREATE INDEX  IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID )  NOLOGGING PARALLEL 2;
索引已创建。
已用时间:  00: 00: 52.56
SQL> drop index IX_CUSTADDR_CUSTID_TP ;
索引已删除。
已用时间:  00: 00: 00.07
SQL> CREATE INDEX  IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID )  NOLOGGING PARALLEL 4;
索引已创建。
已用时间:  00: 00: 53.44
 
看来在单CPU上,并行效果还不好. 
 
7. Parallel 模式
SQL> drop index IX_CUSTADDR_CUSTID_TP ;
索引已删除。
已用时间:  00: 00: 00.02
SQL> CREATE INDEX  IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ) PARALLEL 2;
索引已创建。
已用时间:  00: 00: 49.97
SQL> drop index IX_CUSTADDR_CUSTID_TP ;
索引已删除。
已用时间:  00: 00: 00.02
SQL> CREATE INDEX  IX_CUSTADDR_CUSTID_TP ON CUSTADDR (CUSTID ) PARALLEL 4;
索引已创建。
已用时间:  00: 00: 50.25
 


从上面的测试数据可以看出,700万的数据,建索引,也在1分钟以内。 但是并行在单CPU上效果不明显,而且比光使用NOLOGGING还要慢,因为出现资源争用了,可能是CPU的争用,也可能是I/O的争用。
 

 
 
 
------------------------------------------------------------------------------ 
Blog: http://blog.csdn.net/tianlesoftware 
网上资源: http://tianlesoftware.download.csdn.net 
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
DBA1 群:62697716(满); DBA2 群:62697977

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251118-1-1.html 上篇帖子: Oracle Streams学习二(清除流配置) 下篇帖子: Oracle 10g获取bind peek值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表