楼主: mypengchen2000

[精华] 存储过程的效率问题!!(今晚在线等)

[复制链接]
论坛徽章:
0
11#
 楼主| 发表于 2003-7-1 19:54 | 只看该作者
SQL> select username,
  2  v$lock.sid,
  3  trunc(id1/power(2,16)) rbs,
  4  bitand(id1,to_number('ffff','xxxx'))+0 slot,
  5  id2 seq,
  6  lmode,
  7  request
  8  from v$lock,v$session
  9  where v$lock.type='TX'
10  and v$lock.sid = v$session.sid
11  ;

USERNAME                              SID        RBS       SLOT        SEQ      LMODE    REQUEST
------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
REPORT_123                     57         15        175       9825          6          0

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
12#
发表于 2003-7-1 19:54 | 只看该作者

关于v$session_wait

你应该查询 存储过程所在的 session 的等待事件!

使用道具 举报

回复
论坛徽章:
0
13#
 楼主| 发表于 2003-7-1 19:55 | 只看该作者
biti_rainy帮我看看,这些是在运行存储过程时从数据库查得的!!

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2003-7-1 20:00 | 只看该作者
谢谢!!存储过程所在的 session 的等待事件::::
SQL> select * from v$session_wait where sid in (33,57,21,29,50);

       SID       SEQ# EVENT                                                            P1TEXT                                                                   P1 P1RAW            P2TEXT                                                                   P2 P2RAW            P3TEXT                                                                   P3 P3RAW             WAIT_TIME SECONDS_IN_WAIT STATE
---------- ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- ---------------- ---------------------------------------------------------------- ---------- ---------------- ---------------------------------------------------------------- ---------- ---------------- ---------- --------------- -------------------
        57      40320 direct path read                                                 file number                                                               4 0000000000000004 first dba                                                              3216 0000000000000C90 block cnt                                                                 2 0000000000000002         -1               0 WAITED SHORT TIME
        21      54663 SQL*Net message from client                                      driver id                                                        1413697536 0000000054435000 #bytes                                                                    1 0000000000000001                                                                           0 00                        0               0 WAITING
        29         48 SQL*Net message from client                                      driver id                                                        1413697536 0000000054435000 #bytes                                                                    1 0000000000000001                                                                           0 00                        0            1163 WAITING
        33      13747 SQL*Net message from client                                      driver id                                                        1413697536 0000000054435000 #bytes                                                                    1 0000000000000001                                                                           0 00                        0              39 WAITING
        50        304 SQL*Net message from client                                      driver id                                                        1413697536 0000000054435000 #bytes                                                                    1 0000000000000001                                                                           0 00                        1               0 WAITED KNOWN TIME

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2003-7-1 20:02 | 只看该作者
谢谢!!存储过程所在的 session 的等待事件的SID是:57,21,29,33,50; 请帮我看看什么回事??

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
16#
发表于 2003-7-1 20:04 | 只看该作者

存储过程到底是做了什么操作?

是不是在并发运行?

是否存在着freelists 的问题?
查查你的 table 的 freelists  (from  user_tables)

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2003-7-1 20:08 | 只看该作者

direct path read file number

4  ,编号为4的是什么文件?是不是  临时表空间的文件?
能否把存储过程中的sql(DML)一起给出来  ?

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2003-7-1 20:09 | 只看该作者
存储过程做的是基本的操作:先delete表,再insert;在没有删除数据库文件之前也是这样的,存储过程没改过,还有,现在数据库的这个库上只是有这个存储过程在运行,没有运行其他什么东西!
是否存在着freelists 的问题? 查查你的 table 的 freelists (from user_tables)
这句话什么意思,我不懂,请详细告之,谢谢!!

使用道具 举报

回复
论坛徽章:
0
19#
 楼主| 发表于 2003-7-1 20:16 | 只看该作者
编号为4的是什么文件?是不是 临时表空间的文件?
编号为4的确实是临时文件来的:
      4            19972 2003-4-22 13:          3          4 ONLINE  READ WRITE           89297215 2003-7-1 19:25:                     0                                                           0              0               71303168       4352     71303168      16384 /oracle/oradata/gz/temp01.dbf                                                             0

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
20#
发表于 2003-7-1 20:17 | 只看该作者

关于freelists ,我怀疑问题关键就在这里

select FREELISTS      from  user_tables where table_name = ???;
如果查出来freelists = 1
如果你的数据库是816以上版本
init中
compatible     =  8.1.6    或者以上
则修改

SQL>  alter table t storage(freelists 20);

Table altered.

SQL>


对于你的主键和表相关的所有索引
也是如此
从 user_indexes 中查询 freelists
select  freelists from user_indexes where table_name = ???  

SQL> alter index t_index storage(freelists 20);

Index altered.

SQL>
btw: 注意主键生成的索引名字可能是系统自己命名的

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表