博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对于最近2天的bi数据库的优化
阅读量:2429 次
发布时间:2019-05-10

本文共 1380 字,大约阅读时间需要 4 分钟。

由于朋友的一个bi数据库最近用户增加,日志增加很多,每天有2000w行的用户日志,需要分析,但机器还是原来的一个32位的pc机,速度比较慢,报表需要10个小时才能出来,上头不能及时看到报表,很是着急!

我先想32位的对于内存使用不好,有1.7G的限制,想先突破,我参考了http://yangtingkun.itpub.net/post/468/492617,但是发现出现ora错误 ORA-00371: not enough shared pool memory, should be atleast 72265318 bytes

要注意的是,打开这个参数后DB_CACHE_SIZE 就不能用了,否则启动的时候会报ORA-00385: cannot enable Very Large Memory with new buffer cache parameters的错误,要用DB_BLOCK_BUFFERS来代替

(http://www.linuxdiyf.com/bbs/thread-58174-1-1.html)

设了shared_pool_size和

event = "10262 trace name context forever, level 1024000"

后数据库能重新启动

但是发现数据插入很慢,每秒钟才850条数据(他们没有采用sqlldr入库,而是逐条插入,10000条再commit),这样算下来插入2000w数据需要7个小时才能插完,很是郁闷!

然后我取消了相关参数,查看sql语句的执行时间

发现insert into mid_user_action_log (RECORDTIME,MOBILE,PROVINCEID,CITYID,URI,REGTIME,USERNAME) select /*+ USE_HASH(t,r) */ t.RECORDTIME,t.MOBILE,t.PROVINCEID,t.CITYID,t.URI,r.recordtime ,t.userid from a t ,b r where t.mobile=r.mobile(+) and t.mobile is not null and length(t.mobile)=11

这个a表有1800w条数据,b有600w条数据
使用hash_join后发现很快2分钟!

还有一个:insert into a select mobile ,case .. when from b group by mobile的语句,发现select不花费时间,但是insert into花费了大量的时间,整个时间花了大概65分钟,经查发现a表是个大表,有1800w的数据,有2个索引;慢就慢在组织索引上;alter index inx_a unusable; 然后插入数据;最后alter index inx_a rebuild;最后发现时间为13分钟!

[@more@]

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

转载于:http://blog.itpub.net/7916042/viewspace-1028975/

你可能感兴趣的文章
# 运维日志20180108记录
查看>>
# 运维日志20180109
查看>>
# 运维日志20180110
查看>>
# 运维日志20180111
查看>>
小米笔记本pro系统重置记事
查看>>
Fedora 27添加默认拼音输入法
查看>>
Ubuntu-Budgie折腾记
查看>>
VS Code配置python运行环境
查看>>
个人VS Code配置文件JSON
查看>>
# 维护日志20180123
查看>>
# 运维日志20180213
查看>>
Lustre 2.x文件系统操作手册——前言
查看>>
# Lustre文件系统
查看>>
# 理解Lustre网络(LNet)
查看>>
Note_python(01)
查看>>
Note_python(02)
查看>>
Note_python(03)
查看>>
Note_python(04)
查看>>
Note_python(05)
查看>>
# 安卓手机启动黑阈服务
查看>>