Imporving the performance of a query
Hi,
I have the following query in Oracle:
SELECT distinct VECTOR_ID FROM SUMMARY_VECTOR where CASE_NAME like 'BASECASE_112_ECLIPSE100'
"SUMMARY_VECTOR" contains approximately 120 million records or tuples. So the total time for this query is about 62 seconds
I want to improve the performance of this query. How can I achieve this ?
any hint ?
Thanks
PLAN_TABLE_OUTPUT
Plan hash value: 3042243244
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|
PLAN_TABLE_OUTPUT
| 0 | SELECT STATEMENT | | 1 | 29 | 182K (3)| 00:36
:28 |
| 1 | SORT AGGREGATE | | 1 | 29 | |
|
|* 2 | TABLE ACCESS FULL| SUMMARY_VECTOR | 4323K| 119M| 182K (3)| 00:36
:28 |
PLAN_TABLE_OUTPUT
Predicate Information (identified by operation id):
2 - filter("CASE_NAME"='BASECASE_112_ECLIPSE100')
14 rows selected.
Similar Messages
-
Need help in optimising the performance of a query
Need help in optimising the performance of a query. Below is the query that is executed on TABLE_A, TABLE_B and TABLE_C with record counts as 10M, 10m and 42 (only) respectively and it takes around 5-7 minutes to get 40 records:
SELECT DISTINCT a.T_ID_, a.FIRSTNAME, b.T_CODE, b.PRODUCT,
CASE WHEN TRUNC(b.DATE) +90 = TRUNC(SYSDATE) THEN -90 WHEN TRUNC(b.DATE) +30 = TRUNC(SYSDATE) THEN -30 ELSE 0 END AS T_DATE FROM TABLE_B b
INNER JOIN TABLE_A a ON (a.T_ID_ = b.T_ID_) LEFT JOIN TABLE_C c ON b.PRODUCT = c.PRODUCT
WHERE b.STATUS = 'T' AND (b.TYPE = 'ACTION'
AND ( TRUNC(b.DATE) + 1 = TRUNC(SYSDATE) ) ) AND b.PRODUCT = 2;
Note: Indices on the join columns are available in the respective tables
Please let me know if there is any better way to write it.
Edited by: 862944 on Aug 18, 2011 9:52 AM862944 wrote:
Need help in optimising the performance of a query. Below is the query that is executed on TABLE_A, TABLE_B and TABLE_C with record counts as 10M, 10m and 42 (only) respectively and it takes around 5-7 minutes to get 40 records:
SELECT DISTINCT a.T_ID_, a.FIRSTNAME, b.T_CODE, b.PRODUCT,
CASE WHEN TRUNC(b.DATE) +90 = TRUNC(SYSDATE) THEN -90 WHEN TRUNC(b.DATE) +30 = TRUNC(SYSDATE) THEN -30 ELSE 0 END AS T_DATE FROM TABLE_B b
INNER JOIN TABLE_A a ON (a.T_ID_ = b.T_ID_) LEFT JOIN TABLE_C c ON b.PRODUCT = c.PRODUCT
WHERE b.STATUS = 'T' AND (b.TYPE = 'ACTION'
AND ( TRUNC(b.DATE) + 1 = TRUNC(SYSDATE) ) ) AND b.PRODUCT = 2;
Note: Indices on the join columns are available in the respective tables
Please let me know if there is any better way to write it.
Edited by: 862944 on Aug 18, 2011 9:52 AM[When Your Query Takes Too Long|https://forums.oracle.com/forums/thread.jspa?messageID=1812597] -
HI All, How to improve the performance in given query?
HI All,
How to improve the performance in given query?
Query is..
PARAMETERS : p_vbeln type lips-vbeln.
DATA : par_charg TYPE LIPS-CHARG,
par_werks TYPE LIPS-WERKS,
PAR_MBLNR TYPE MSEG-MBLNR .
SELECT SINGLE charg
werks
INTO (par_charg, par_werks)
FROM lips
WHERE vbeln = p_vbeln.
IF par_charg IS NOT INITIAL.
SELECT single max( mblnr )
INTO par_mblnr
FROM mseg
WHERE bwart EQ '101'
AND werks EQ par_werks (index on werks only)
AND charg EQ par_charg.
ENDIF.
Regards
SteveHi steve,
Can't you use the material in your query (and not only the batch)?
I am assuming your system has an index MSEG~M by MANDT + MATNR + WERKS (+ other fields). Depending on your system (how many different materials you have), this will probably speed up the query considerably.
Anyway, in our system we ended up by creating an index by CHARG, but leave as a last option, only if selecting by matnr and werks is not good enough for your scenario.
Hope this helps,
Rui Dantas -
Please help me how to improve the performance of this query further.
Hi All,
Please help me how to improve the performance of this query further.
Thanks.Hi,
this is not your first SQL tuning request in this community -- you really should learn how to obtain performance diagnostics.
The information you posted is not nearly enough to even start troubleshooting the query -- you haven't specified elapsed time, I/O, or the actual number of rows the query returns.
The only piece of information we have is saying that your query executes within a second. If we believe this, then your query doesn't need tuning. If we don't, then we throw it away
and we're left with nothing.
Start by reading this blog post: Kyle Hailey » Power of DISPLAY_CURSOR
and applying this knowledge to your case.
Best regards,
Nikolay -
Ways to improve the performance of my query?
Hi all,
I have created a multi provider which enables to fetch the data from 3 ods. And each ods contains huge amount of data. As a result my query performance is very slow..
apart from creating indexes on ods? is there any other to be carried out to improve the performance of my query. Since all the 3 info providers are ods.
thanxs
harithaHaritha,
If you still need more info, just have a look below:
There are few ways your queries can be improved:
1. Your Data volume in your InfoProviders.
2. Dim table, how you have manage your objects into your dim table.
3. Query that runs from multiprovider vs cube itself. when running from multiproviders at the time of execution the system has to create more tables hence the query performance will be affected.
4. Aggregates into the cube, and they perfection of designing the aggregates.
5. OLAPCHACHE
6. Calculation formula
etc.
and also you can go thru the links below:
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/cccad390-0201-0010-5093-fd9ec8157802
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/ce7fb368-0601-0010-64ba-fadc985a1f94
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/c8c4d794-0501-0010-a693-918a17e663cc
Hope this helps you.
****Assign Points*******
Gattu -
How to measure the performance of sql query?
Hi Experts,
How to measure the performance, efficiency and cpu cost of a sql query?
What are all the measures available for an sql query?
How to identify i am writing optimal query?
I am using Oracle 9i...
It ll be useful for me to write efficient query....
Thanks & Regardspsram wrote:
Hi Experts,
How to measure the performance, efficiency and cpu cost of a sql query?
What are all the measures available for an sql query?
How to identify i am writing optimal query?
I am using Oracle 9i... You might want to start with a feature of SQL*Plus: The AUTOTRACE (TRACEONLY) option which executes your statement, fetches all records (if there is something to fetch) and shows you some basic statistics information, which include the number of logical I/Os performed, number of sorts etc.
This gives you an indication of the effectiveness of your statement, so that can check how many logical I/Os (and physical reads) had to be performed.
Note however that there are more things to consider, as you've already mentioned: The CPU bit is not included in these statistics, and the work performed by SQL workareas (e.g. by hash joins) is also credited only very limited (number of sorts), but e.g. it doesn't cover any writes to temporary segments due to sort or hash operations spilling to disk etc.
You can use the following approach to get a deeper understanding of the operations performed by each row source:
alter session set statistics_level=all;
alter session set timed_statistics = true;
select /* findme */ ... <your query here>
SELECT
SUBSTR(LPAD(' ',DEPTH - 1)||OPERATION||' '||OBJECT_NAME,1,40) OPERATION,
OBJECT_NAME,
CARDINALITY,
LAST_OUTPUT_ROWS,
LAST_CR_BUFFER_GETS,
LAST_DISK_READS,
LAST_DISK_WRITES,
FROM V$SQL_PLAN_STATISTICS_ALL P,
(SELECT *
FROM (SELECT *
FROM V$SQL
WHERE SQL_TEXT LIKE '%findme%'
AND SQL_TEXT NOT LIKE '%V$SQL%'
AND PARSING_USER_ID = SYS_CONTEXT('USERENV','CURRENT_USERID')
ORDER BY LAST_LOAD_TIME DESC)
WHERE ROWNUM < 2) S
WHERE S.HASH_VALUE = P.HASH_VALUE
AND S.CHILD_NUMBER = P.CHILD_NUMBER
ORDER BY ID
/Check the V$SQL_PLAN_STATISTICS_ALL view for more statistics available. In 10g there is a convenient function DBMS_XPLAN.DISPLAY_CURSOR which can show this information with a single call, but in 9i you need to do it yourself.
Note that "statistics_level=all" adds a significant overhead to the processing, so use with care and only when required:
http://jonathanlewis.wordpress.com/2007/11/25/gather_plan_statistics/
http://jonathanlewis.wordpress.com/2007/04/26/heisenberg/
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/ -
Hpw to tune the performance of following query?
Hi all,
I want a particular set of G/L acct nos for the list of billing documents that i have in an internal table ie. pt_vbrk. I am using table BSIS.However ,when i use the following query it is taking very very long time .I even tried using LOOP...ENDLOOP statement.Can anyone tell me how to enhance the performance of the query?Thanks in advance.
i = 0.
loop at pt_vbrk.
i = i + 1.
endloop.
while j <= i.
read table pt_vbrk index j.
select single hkont from bsis into corresponding fields of
pt_vbrk where
( hkont = '0013100000' or hkont = '0013105000'
or hkont = '0013110000' or hkont = '0013112000'
or hkont = '0013115000' or hkont = '0013120000'
or hkont = '0013125000' or hkont = '0013135500'
or hkont = '0013140000' or hkont = '0013145000'
or hkont = '0013155000' or hkont = '0013165000'
or hkont = '0013175000' or hkont = '0013170000' )
and belnr = pt_vbrk-belnr and gjahr = pt_vbrk-gjahr . "#EC CI_NOFIRST
modify pt_vbrk from pt_vbrk index j.
j = j + 1.
endwhile.
Moderator message - Moved to the correct forum
Edited by: Rob Burbank on Sep 22, 2009 9:06 AMTry the following approach.
TYPES: BEGIN OF ty_bsis,
bukrs TYPE bsis-bukrs,
hkont TYPE bsis-hkont,
augdt TYPE bsis-augdt,
augbl TYPE bsis-augbl,
zuonr TYPE bsis-zuonr,
gjahr TYPE bsis-gjahr,
belnr TYPE bsis-belnr,
buzei TYPE bsis-buzei,
END OF ty_bsis.
DATA: w_bsis TYPE ty_bsis ,
w_index TYPE sy-tabix,
t_bsis TYPE SORTED TABLE OF ty_bsis
WITH NON-UNIQUE KEY bukrs belnr gjahr ,
t_vbrk_tmp LIKE TABLE OF pt_vbrk .
RANGES: r_hkont FOR bsis-hkont.
IF NOT pt_vbrk[] IS INITIAL.
REFRESH r_hkont.
r_hkont-sign = 'I'.
r_hkont-option = 'EQ'.
r_hkont-low = '0013100000'.
APPEND r_hkont.
r_hkont-low = '0013105000'.
APPEND r_hkont.
r_hkont-low = '0013110000'.
APPEND r_hkont.
r_hkont-low = '0013112000'.
APPEND r_hkont.
r_hkont-low = '0013115000'.
APPEND r_hkont.
r_hkont-low = '0013120000'.
APPEND r_hkont.
r_hkont-low = '0013125000'.
APPEND r_hkont.
r_hkont-low = '0013135500'.
APPEND r_hkont.
r_hkont-low = '0013140000'.
APPEND r_hkont.
r_hkont-low = '0013145000'.
APPEND r_hkont.
r_hkont-low = '0013155000'.
APPEND r_hkont.
r_hkont-low = '0013165000'.
APPEND r_hkont.
r_hkont-low = '0013175000'.
APPEND r_hkont.
r_hkont-low = '0013170000'.
APPEND r_hkont.
t_vbrk_tmp[] = pt_vbrk[].
SORT t_vbrk_tmp BY bukrs gjahr belnr.
DELETE ADJACENT DUPLICATES FROM t_vbrk_tmp
COMPARING bukrs gjahr belnr.
SELECT bukrs
hkont
augdt
augbl
zuonr
gjahr
belnr
buzei
FROM bsis
INTO TABLE t_bsis
FOR ALL ENTRIES IN t_vbrk_tmp
WHERE bukrs EQ t_vbrk_tmp-bukrs
AND hkont IN r_hkont
AND gjahr EQ t_vbrk_tmp-gjahr
AND belnr EQ t_vbrk_tmp-belnr.
IF sy-subrc EQ 0.
LOOP AT pt_vbrk.
w_index = sy-tabix.
READ TABLE t_bsis INTO w_bsis
WITH KEY bukrs = pt_vbrk-bukrs
belnr = pt_vbrk-belnr
gjahr = pt_vbrk-gjahr
TRANSPORTING
hkont.
IF sy-subrc EQ 0.
pt_vbrk-hkont = w_bsis-hkont.
MODIFY pt_vbrk INDEX w_index
TRANSPORTING
hkont.
ENDIF.
ENDIF.
ENDIF. -
Improving the performance of this query
Hi, Do you see any change we could do on this to improve its performance, pls, I appreciate you taking few minutes to help with analysing and tuining it
select hoc.hoc_id,
hoc.mstr_key_id,
address.DISP_NME,
blck.st_blck_id,
blck.mstr_key_id as blck_mstr_key,
bldg.BLDG_ID,
hoc.BLDG_KEY_ID,
address.OCPD_IND,
address.TP_TYPE_CDE,
'' as cmbcNumber,
'' as tpSiteNumber,
case
when address.cmbc_id is not null then amsowner.ams_038_direct_connect.GetMobilierForCMB(address.cmbc_id)
when address.lbc_id is not null and address.cmbc_id is null then amsowner.ams_038_direct_connect.GetMobilierForLBC(address.lbc_id)
END as Mobilier,
choice.cnsmr_chce_ind,
hoc.SRT_IND,
hoc.DLVRY_IND,
case valRES_STAT_CDE
when 123444 then hoc.cse_sprtn_wdth
when 123555 then hoc_pend.cse_sprtn_wdth
when 123666 then hoc_pend.cse_sprtn_wdth
end as cse_sprtn_wdth,
case valRES_STAT_CDE
when 123444 then hoc.admail_color_id
when 123555 then hoc.admail_color_id
when 123666 then hoc_pend.admail_color_id
end as admail_color_id,
case valRES_STAT_CDE
when 123444 then hoc.tieout
when 123555 then hoc_pend.tieout
when 123666 then hoc_pend.tieout
end as tieout,
hoc.callr_Ind,
hoc.PCKUP_ind,
case
when hldout.hld_out_id > 0 then 33
else 34
end as HLDOUT_IND,
case valRES_STAT_CDE
when 123444 then hoc.BREAKER_CARD_NUM
when 123555 then hoc_pend.BREAKER_CARD_NUM
when 123666 then hoc_pend.BREAKER_CARD_NUM
end as BREAKER_CARD_IND,
Case
when valRES_STAT_CDE = 123444 and hoc.MP_ID is not null and hoc.MP_ID <> 0 then 33
when valRES_STAT_CDE = 123555 and hoc_pend.MP_ID is not null and hoc_pend.MP_ID <> 0 then 33
when valRES_STAT_CDE = 123666 and hoc_pend.MP_ID is not null and hoc_pend.MP_ID <> 0 then 33
else 34 END as MP_IND,
case
when valRES_STAT_CDE = 123444 then hoc.LCRMS_SEQ_NUM
when valRES_STAT_CDE = 123555 then hoc_pend.DEL_SEQ
when valRES_STAT_CDE = 123666 then hoc_pend.DEL_SEQ
END as DEL_SEQ,
case
when (hoc_type_cde = 154 and hoc.MP_ID is not null ) then (NVL(mp.SLCLRES_RATE , 0)+ NVL(mp.OSSDRES_RATE,0))
when (hoc_type_cde = 154 and hoc.MP_ID is null ) then (NVL(asmt.SLCLRES_RATE , 0)+ NVL(asmt.OSSDRES_RATE,0))
when (hoc_type_cde = 156 and hoc.MP_ID is not null )then (NVL(mp.SLCLCOM_RATE,0) + NVL(mp.OSSDCOM_RATE,0))
when (hoc_type_cde = 156 and hoc.MP_ID is null ) then (NVL(asmt.SLCLCOM_RATE,0) + NVL(asmt.OSSDCOM_RATE,0))
else 0
END As AvgMail,
Case
when valRES_STAT_CDE = 123444 then hoc.drct_ind
when valRES_STAT_CDE = 123555 then hoc_pend.drct_ind
when valRES_STAT_CDE = 123666 then hoc_pend.drct_ind
END as drct_ind,
Case
when pc.ldu_type_cde in (492, 564, 565, 566, 567 ) then 33
else 34
end as lvr_ind,
hoc.A12_CARD_IND,
hoc.DNC_CARD_IND,
hoc.CARD_IND,
hoc.FRCE_CARD_IND,
hoc.EXTRA_CARD_NBR,
hoc.TTL_HOC_CNT,
--(select BSNS_NME_EN from occupant where occupant.ADDR_MAIL_ID = address.addr_id and occupant.prmry_ind = 33 and rownum <= 1 )as PRIMARY_BUS_NME_EN,
--(select BSNS_NME_FR from occupant where occupant.ADDR_MAIL_ID = address.addr_id and occupant.prmry_ind = 33 and rownum <= 1 )as PRIMARY_BUS_NME_FR,
blck.blck_seq,
address.ADDR_NUM,
address.ADDR_SFX_CDE,
address.ADDR_STE_NUM,
hoc.HOC_TYPE_CDE,
hoc.CSE_SPRTN_GRP_ID,
pc.pc_id As pc_id,
pc.disp_nme as pc_disp_nme,
hoc.bag_ind,
hoc.CASETAG,
occupant.BSNS_NME_EN as PRIMARY_BUS_NME_EN , occupant.BSNS_NME_FR as PRIMARY_BUS_NME_FR
from amsowner.AMS_038_HOC hoc
left join amsowner.ams_038_hoc_pndng hoc_pend
on hoc.MSTR_KEY_ID = hoc_pend.MSTR_KEY_ID
inner join amsowner.AMS_038_ST_BlCK blck
on hoc.st_blck_key_id = blck.mstr_key_id
inner join amsowner.postal_code pc
on blck.pc_id = pc.pc_id
left join amsowner.AMS_038_bldg bldg
on hoc.BLDG_KEY_ID = bldg.MSTR_KEY_ID
inner join amsowner.address address
on address.addr_id = hoc.addr_mail_id
inner join amsowner.addr_lctn_to_mail locToMail
on locToMail.addr_mail_id = address.addr_id
inner join amsowner.addr_chce choice
on choice.addr_id = locToMail.addr_lctn_id
left join occupant on (occupant.ADDR_MAIL_ID = address.addr_id and occupant.prmry_ind = 33)
left join amsowner.ams_038_hld_out hldout
on (hldout.mstr_key_id = hoc.mstr_key_id and hldout.end_dte is null)
left join amsowner.ams_038_dm dm
on dm.dm_id = blck.dm_id
left join ams_038_assmt asmt
on blck.pc_id = asmt.pc_id and asmt.dpt_cde_nme = valDpt_cde_nme and ((asmt.case_type_cde = 1220 and dm.a62_cse_ind = 33) or (asmt.case_type_cde = 1219 and dm.a62_cse_ind = 34))
left join ams_038_mail_prfl mp
on hoc.mp_id = mp.mp_id and ((mp.case_type_cde = 1220 and dm.a62_cse_ind = 33) or (mp.case_type_cde = 1219 and dm.a62_cse_ind = 34))
where hoc.mstr_key_id = valMSTR_KEY_ID and blck.DPT_CDE_NME = valDpt_cde_nme and hoc.DPT_CDE_NME = valDpt_cde_nme and blck.RSTRCTR_STAT_CDE = restCode;
Thanks a lot :)Hi and welcome to the forum.
I appreciate you taking few minutes to help with analysing and tuining itUnfortunatly it's not that simple.
We would need some more input here, like:
- database version
- optimizer settings
- execution plans
-etc..
Tuning is a complex matter, since many parameters come into play here.
If you want some useful responses then see:
[When your query takes too long...|http://forums.oracle.com/forums/thread.jspa?messageID=3299435]
[How to post a SQLStatement tuning request|http://forums.oracle.com/forums/thread.jspa?threadID=863295&tstart=0]
to understand what information would also be very useful to us (and, if needed, have your DBA participating in this as well). -
I'm trying to improve the performance on a query that is running very slowly.
SELECT p.book_id AS payment_book_id, b.status AS book_status,
p.status AS payment_status, p.supplier_ref_no AS data_cash_ref,
f.train_pnr_no AS train_pnr, f.train_id AS train_ref_id,
f.service_no AS train_service_no, h.hotel_pnr_no AS hotel_pnr,
h.hotel_id AS hotel_ref_id, h.service_no AS hotel_service_no,
b.total_book_amt AS hotel_amt, c.car_pnr_no AS car_pnr,
c.car_id AS car_ref_id, c.service_no AS car_service_no,
b.book_date, b.promo_code
FROM gk_payment p
LEFT JOIN gk_book b ON b.book_id = p.book_id
LEFT JOIN gk_train_itiner_det f ON p.book_id = f.book_id
LEFT JOIN gk_hotel_itiner_det h ON p.book_id = h.book_id
LEFT JOIN gk_car_itiner_det c ON p.book_id = c.book_id
WHERE ((b.status IN ('8') AND p.status IN ('2', '0', '1', '8', '7')) OR
(b.status IN ('5') AND p.status IN ('3')) OR
(b.status IN ('11') AND p.status IN ('4', '5')))
AND p.service_no IS NOT NULL
AND b.book_type = 1
ORDER BY train_id, car_idSome small comments about the query.
1) The first left join is not needed, since the where filter " AND b.book_type = 1" eliminates all cases where table b would be outer join (=empty).
FROM gk_payment p
LEFT JOIN gk_book b ON b.book_id = p.book_id
2) The status comparison can be written in a different way. This will probably not change anything performancewise
instead of
WHERE ((b.status IN ('8') AND p.status IN ('2', '0', '1', '8', '7')) OR
(b.status IN ('5') AND p.status IN ('3')) OR
(b.status IN ('11') AND p.status IN ('4', '5')))
you can write
WHERE ((b.status,p.status))
IN (('8','0')
,('8','1')
,('8','2')
,('8','7')
,('8','8')
,('5','3')
,('11','4')
,('11',53')
Which is imo much easier to read, maintain and checkable for completeness.
Furthermore: If the status fields are number columns then by all means compare them with numbers and not as strings.
3) Remove the order by condition
Is it faster without it? If yes, do you really need to order the output? -
When thread-count 65 /thread-count can imporve the performance
We are using very classical way get / put object with key for our application on embedding mode.
Application run on top Weblogic Server, Tangosol as embedding Lib.
in this case, tunning this parameter can improve performance or non?
Best regards.
Jerome
<invocation-scheme>
<scheme-name>InvocationScheme</scheme-name>
<service-name>InvocationService</service-name>
<thread-count>65</thread-count>
<autostart>true</autostart>
</invocation-scheme>Hi,
if I understand well: When we are using embedding mode with Weblogic Server, we are using the thread distributed by WLS, we don't need any thread by invocable Service thread, Am I right?
attached is one Thread dump, we are seeing a lot of wait lock, some one can give a more clear explanation? Sorry, it's quite long, but i can't use attach mode. I can send the summary
Best regards.
Jerome
========================================================================
Dump Files
Stat Count
Thread/Locks Dump_0 Dump_1 Dump_2 Dump_3 Dump_4 Total Average Lock Type
Total Active ExecuteThread 25 18 31 119 138 331
Total Waiting thread among Active ExecuteThread and with respect to Coherence related locks 22 15 28 116 134 315
1. Locks waiting by IMPI_IMPU_DAO.get_all_IMPU_of_IMSU_with_User_State(IMPI_IMPU_DAO.java:178) 25 DistributedCache$GetRequest$Poll
2. Locks waiting by IMPI_IMPU_DAO.get_all_IMPU_of_IMSU_with_User_State(IMPI_IMPU_DAO.java:186) 33 DistributedCache$GetRequest$Poll
3. Locks waiting by IMPI_IMPU_DAO.get_all_IMPU_of_IMSU_with_User_State(IMPI_IMPU_DAO.java:201) 40 DistributedCache$GetRequest$Poll
4. Locks waiting by IMPI_IMPU_DAO.get_by_IMPI_and_IMPU_ID(IMPI_IMPU_DAO.java:74) 8 DistributedCache$GetRequest$Poll
5. Locks waiting by IMPU_DAO.get_by_Identity(IMPU_DAO.java:201) 0 0 3 10 16 29 5.8 DistributedCache$GetRequest$Poll
6. Locks waiting by IMPU_DAO.get_by_Identity(IMPU_DAO.java:206) 0 0 7 23 1 31 6.2 DistributedCache$GetRequest$Poll
7. Locks waiting by IMPI_DAO.get_by_Identity(IMPI_DAO.java:105) 0 0 1 6 3 10 2 DistributedCache$GetRequest$Poll
8. Locks waiting by IMPI_DAO.get_by_Identity(IMPI_DAO.java:110) 0 0 0 3 7 10 2 DistributedCache$GetRequest$Poll
9. Locks waiting by IMSU_DAO.get_by_ID(IMSU_DAO.java:86) 2 0 2 4 9 17 3.4 DistributedCache$GetRequest$Poll
10. Locks waiting by Preferred_SCSCF_Set_DAO.get_all_from_set(Preferred_SCSCF_Set_DAO.java:81) 2 5 2 20 9 38 7.6 distributedCacheRequest.PartialRequest$Poll
11. Locks waiting by Preferred_SCSCF_Set_DAO.get_all_from_set(Preferred_SCSCF_Set_DAO.java:77) 1 5 0 0 12 18 3.6 distributedCacheRequest.PartialRequest$Poll
12. Locks waiting by CapabilitiesSet_DAO.get_all_from_set(CapabilitiesSet_DAO.java:77) 0 2 3 10 5 20 4 distributedCacheRequest.PartialRequest$Poll
13. Locks waiting by VisitedNetwork_DAO.get_by_Identity(VisitedNetwork_DAO.java:73) 0 0 2 15 5 22 4.4 distributedCacheRequest.PartialRequest$Poll
14. Locks waiting by IMPU_VisitedNetwork_DAO.get_by_IMPU_and_VisitedNetwork_ID(IMPU_VisitedNetwork_DAO.java:65) 1 0 3 4 6 14 2.8 DistributedCache$GetRequest$Poll
======================================================================== -
Performace problem in a select statment how to imporve the performance
fist select statment
SELECT a~extno
a~guid_lclic " for next select
e~ctsim
e~ctsex
*revised spec 3rd
f~guid_pobj
f~amnt_flt
f~amcur
f~guid_mobj
e~srvll "pk
e~ctsty "PK
e~lgreg "PK
INTO TABLE gt_sagmeld
FROM /SAPSLL/LCLIC as a
INNER JOIN /sapsll/tlegsv as e on elgreg = algreg
* revised spec 3rd
inner join /sapsll/legcon as f on fguid_lclic = aguid_lclic " for ccngn1 selection
inner join /sapsll/corcts as g on gguid_pobj = fguid_pobj
where a~extno in s_extno.
sort gt_sagmeld by guid_lclic guid_pobj.
lgreg ctsty srvll
delete adjacent duplicates from gt_sagmeld comparing guid_lclic guid_pobj.
it selects about 20 lakh records
belos select statment whichs is taking time as it is based on the entreis of gt_sagmeld
select /sapsll/corpar~guid_mobj
/sapsll/corpar~PAFCT
but000~bpext
but000~partner
/sapsll/corpar~parno
into table gt_but001
from /sapsll/corpar
INNER join but000 on but000partner = /sapsll/corparparno
for all entries in gt_sagmeld
where /sapsll/corpar~guid_mobj = gt_sagmeld-guid_mobj
and /sapsll/corpar~PAFCT = 'SH'.
SELECT /sapsll/cuit~guid_cuit " PK
/sapsll/cuit~QUANT_FLT " to be displayed
/sapsll/cuit~QUAUM " to be displayed
/sapsll/cuit~RPTDT " to be displayed
/sapsll/cuhd~guid_cuhd " next select
/sapsll/cuit~guid_pr " next select
INTO table gt_sapsllcuit
FROM /sapsll/cuit
inner join /sapsll/cuhd on /sapsll/cuitguid_cuhd = /sapsll/cuhdguid_cuhd
FOR all entries in gt_sagmeld
WHERE /sapsll/cuit~guid_cuit = gt_sagmeld-guid_pobj.
Delete adjacent duplicates from gt_sapsllcuit[].
if not gt_sapsllcuit[] is initial.hi navenet
that didnt worked
we need to try ur range options
but not sure what you told in the last mail as not clear with range can u pls eloboragte more i am pasting the full code here
SELECT a~extno
a~guid_lclic " for next select but000
e~ctsim
e~ctsex
e~srvll
e~ctsty
e~lgreg
INTO TABLE gt_sagmeld
FROM /SAPSLL/LCLIC as a
INNER JOIN /sapsll/tlegsv as e on elgreg = algreg
where a~extno in s_extno.
sort gt_sagmeld by guid_lclic.
delete adjacent duplicates from gt_sagmeld comparing all fields.
IF not gt_sagmeld[] is initial.
SELECT /sapsll/legcon~guid_lclic
/sapsll/legcon~guid_pobj
/sapsll/legcon~amnt_flt
/sapsll/legcon~amcur
but000~bpext
*revised spec
/sapsll/corpar~PAFCT
/sapsll/legcon~guid_mobj
/sapsll/cuit~guid_cuit
INTO TABLE gt_but000
FROM /SAPSLL/LEGCON
for all entries in gt_sagmeld
where /SAPSLL/legcon~guid_lclic = gt_sagmeld-guid_lclic.
IF NOT GT_BUT000[] IS INITIAL.
sort gt_but000 by guid_mobj.
delete adjacent duplicates from gt_but000 comparing guid_mobj.
select /sapsll/corpar~guid_mobj
/sapsll/corpar~PAFCT
/sapsll/corpar~parno
into table gt_but001
from /sapsll/corpar
for all entries in gt_but000
where /sapsll/corpar~guid_mobj = gt_but000-guid_mobj.
and /sapsll/corpar~PAFCT = 'SH'.
DELETE gt_but001 where PAFCT <> 'SH'.
*sort gt_corpar by parno.
*delete adjacent duplicates from gt_corpar comparing parno.
*select gd000~partner
gd000~bpext
from gd000 into table gt_but001
for all entries in gt_corpar
where gd000~partner = gt_corpar-parno.
my ultimat aim is to select bpext from gd000
can u please explain how to use ranges here and what is the singnificance and how ill i read the data from the final table if we use ranges
regards
Nishant -
Please guide to improve the performance of XML column reading query.
Hi Experts,
The below query is taking 45 seconds to return 170 records.
Due to selecting XMLTYPE column in query.
select *
from RANGE where WSNO = 3
order by PREFERENCE desc;
The total number of records in the table is 1060.
Even it's a very small table why it's taking 45 seconds.
Can anybody please help me on how to get the output in 2 to 3 seconds.
I want all the columns from the table.
The problem only with REST column XMLTYPE.
If I am not selecting this column I am getting output in 1 to 2 seconds.
I am posting the execution plan and DDL for table and index.
PLAN_TABLE_OUTPUT
Plan hash value: 3593186720
| SNO | Operation | EMPNAME | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 31 | 23281 | 21 (5)| 00:00:01 |
| 1 | SORT ORDER BY | | 31 | 23281 | 21 (5)| 00:00:01 |
| 2 | TABLE ACCESS BY INDEX ROWID | RANGE | 31 | 23281 | 20 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | INDX_WSNO | 31 | | 1 (0)| 00:00:01 |
Predicate Information (SNOentified by operation SNO):
3 - access("WSNO"=3)
CREATE TABLE RANGE
SNO NUMBER,
BUSNO NUMBER,
EMPNAME NVARCHAR2(64),
PREFERENCE NUMBER,
TSNO NUMBER,
MEMBER CHAR(1 CHAR) ,
EQU CHAR(1 CHAR) ,
REMAIL CHAR(1 CHAR) ,
SSR CHAR(1 CHAR) ,
SUB CHAR(1 CHAR) ,
SPN CHAR(1 CHAR) ,
SEMPNAME NVARCHAR2(128),
FVL NUMBER(32),
TVL NUMBER(32),
ISD CHAR(1 CHAR),
CHANGED NVARCHAR2(64),
CDATE TIMESTAMP(6) ,
UDBY NVARCHAR2(64),
UDATE TIMESTAMP(6),
LSTU CLOB,
WSNO NUMBER,
ASTN CHAR(1 CHAR),
ASTNPL CHAR(1 CHAR),
AVAF CHAR(1 CHAR),
REST SYS.XMLTYPE
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 11
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
XMLTYPE REST STORE AS CLOB
( TABLESPACE USERS
ENABLE STORAGE IN ROW
CHUNK 8192
PCTVERSION 10
NOCACHE
INDEX (
TABLESPACE USERS
STORAGE (
INITIAL 64K
NEXT 1
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
LOB (LSTU) STORE AS
( TABLESPACE USERS
ENABLE STORAGE IN ROW
CHUNK 8192
RETENTION
NOCACHE
INDEX (
TABLESPACE USERS
STORAGE (
INITIAL 64K
NEXT 1
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
NOCACHE
NOPARALLEL
MONITORING;
CREATE INDEX INDX_WSNO ON RANGE(WSNO);
CREATE UNIQUE INDEX RULE_EMPNAME ON RANGE(BUSNO, EMPNAME);
Please help me how to improve the performance of this query.
Thanks.Can you try something like this and check if its faster? (this is just my guess as I dont have your data )
SELECT SNO,
BUSNO,
EMPNAME,
PREFERENCE,
TSNO,
MEMBER,
EQU,
REMAIL,
SSR,
SUB,
SPN,
SEMPNAME,
FVL,
TVL,
ISD,
CHANGED,
CDATE,
UDBY,
UDATE,
LSTU,
WSNO,
ASTN,
ASTNPL,
AVAF,
xmltype.getclobval (rest) rest
FROM RANGE
WHERE wsno = 3
order by PREFERENCE desc;
Cheers,
Manik. -
How can I best improve the performance of my Mac Book Pro?
I have a 1st generation MBP running OS X Tiger (that's right, 10.4.11) and it is really showing it's age, mostly when I'm switching back and forth between multiple programs and when I'm browsing online. It will get tremendously slow (sometimes I'll have to wait 30 seconds to 1 minute just to be able to click a link). I'm wondering, will upgrading my operating system (and adding more RAM) substantially prolong the life of my MBP or do I need to do some more drastic upgrade?
Actually the best thing you can do is wipe the drive, that is after you save all your important files, and reinstal the OS and programs.
Get a Fresh start. this will imporve the performance of the computer back to as it was when it was new. All computer get bogged down overtime with unneeded files, caches and updates. When you start fresh all those old files will be gone and the updates you do will be the newest.
Yes a faster hard drive will help but still a fresh install is the way to go. Especially with the new faster HDD. -
Bad performance of af:query
I am working on Oracle Jdeveloper 11g Release 1
I have a VO which gets executed when the first page gets loaded. suppose the VO is RuleLibraryVO
I have a view criteria RuleLibraryVOCriteria in the VO which is used in the af:query panel in the page.
When i do search for any attribute using the query panel the VO gets executed again everytime even if the VO is in the memory. This is hampering the performance of my query panel as it is again calling getters for all 2000+ rows and then searching. The VO Criteria used is:
<ViewCriteria
Name="RuleLibraryVOCriteria"
ViewObjectName="oracle.sysman.core.gccompliance.model.library.rule.view.RuleLibraryVO"
Conjunction="AND"
Mode="3">
<Properties>
<CustomProperties>
<Property
Name="displayOperators"
Value="InAdvancedMode"/>
<Property
Name="autoExecute"
Value="true"/>
<Property
Name="allowConjunctionOverride"
Value="true"/>
<Property
Name="showInList"
Value="false"/>
<Property
Name="mode"
Value="Basic"/>
<Property
Name="displayName"
ResId="DEFAULT_SEARCH"/>
</CustomProperties>
</Properties>
<ViewCriteriaRow
Name="vcrow3"
UpperColumns="1">
<ViewCriteriaItem
Name="RuleDnameTransient"
ViewAttribute="RuleDnameTransient"
Operator="CONTAINS"
Conjunction="AND"
Required="Optional">
<CompOper
Name="LessThan"
ToDo="-1"
Oper="<"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="LessThanOrEqualTo"
ToDo="-1"
Oper="<="
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThan"
ToDo="-1"
Oper=">"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThanOrEqualTo"
ToDo="-1"
Oper=">="
MinCardinality="0"
MaxCardinality="0"/>
</ViewCriteriaItem>
<ViewCriteriaItem
Name="DescriptionTransient"
ViewAttribute="DescriptionTransient"
Operator="CONTAINS"
Conjunction="AND"
Required="Optional">
<CompOper
Name="LessThan"
ToDo="-1"
Oper="<"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="LessThanOrEqualTo"
ToDo="-1"
Oper="<="
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThan"
ToDo="-1"
Oper=">"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThanOrEqualTo"
ToDo="-1"
Oper=">="
MinCardinality="0"
MaxCardinality="0"/>
</ViewCriteriaItem>
<ViewCriteriaItem
Name="IsSystem"
ViewAttribute="IsSystem"
Operator="="
Conjunction="AND"
Required="Optional"/>
<ViewCriteriaItem
Name="RuleType"
ViewAttribute="RuleType"
Operator="="
Conjunction="AND"
Required="Optional"/>
<ViewCriteriaItem
Name="TargetType"
ViewAttribute="TargetType"
Operator="="
Conjunction="AND"
Required="Optional"
Value=":targetType"
IsBindVarValue="true"/>
<ViewCriteriaItem
Name="KeywordsTransient"
ViewAttribute="KeywordsTransient"
Operator="CONTAINS"
Conjunction="AND"
Required="Optional"/>
</ViewCriteriaRow>
</ViewCriteria>The query panel in jspx is:
<af:query id="qryId2"
headerText="#{coregccomplianceuiBundle.COMPLIANCE_SEARCH}"
disclosed="false"
value="#{bindings.RuleLibraryVOCriteriaQuery.queryDescriptor}"
model="#{bindings.RuleLibraryVOCriteriaQuery.queryModel}"
queryListener="#{bindings.RuleLibraryVOCriteriaQuery.processQuery}"
queryOperationListener="#{bindings.RuleLibraryVOCriteriaQuery.processQueryOperation}"
resultComponentId="::pc1:ruleLib" rows="3" maxColumns="2"
saveQueryMode="hidden"/>How can i optimize the search behavior so that it only searches using the vo data already loaded in memory.Hi Frank,
Thanks for quick response,
As suggested i made the Query Execution Mode to - In-Memory. And my view criteria now is:
<ViewCriteria
Name="RuleLibraryVOCriteria"
ViewObjectName="oracle.sysman.core.gccompliance.model.library.rule.view.RuleLibraryVO"
Conjunction="AND"
Mode="2">
<Properties>
<CustomProperties>
<Property
Name="displayOperators"
Value="InAdvancedMode"/>
<Property
Name="autoExecute"
Value="true"/>
<Property
Name="allowConjunctionOverride"
Value="true"/>
<Property
Name="showInList"
Value="false"/>
<Property
Name="mode"
Value="Basic"/>
<Property
Name="displayName"
ResId="DEFAULT_SEARCH"/>
</CustomProperties>
</Properties>
<ViewCriteriaRow
Name="vcrow3"
UpperColumns="1">
<ViewCriteriaItem
Name="RuleDnameTransient"
ViewAttribute="RuleDnameTransient"
Operator="CONTAINS"
Conjunction="AND"
Required="Optional">
<CompOper
Name="LessThan"
ToDo="-1"
Oper="<"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="LessThanOrEqualTo"
ToDo="-1"
Oper="<="
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThan"
ToDo="-1"
Oper=">"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThanOrEqualTo"
ToDo="-1"
Oper=">="
MinCardinality="0"
MaxCardinality="0"/>
</ViewCriteriaItem>
<ViewCriteriaItem
Name="DescriptionTransient"
ViewAttribute="DescriptionTransient"
Operator="CONTAINS"
Conjunction="AND"
Required="Optional">
<CompOper
Name="LessThan"
ToDo="-1"
Oper="<"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="LessThanOrEqualTo"
ToDo="-1"
Oper="<="
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThan"
ToDo="-1"
Oper=">"
MinCardinality="0"
MaxCardinality="0"/>
<CompOper
Name="GreaterThanOrEqualTo"
ToDo="-1"
Oper=">="
MinCardinality="0"
MaxCardinality="0"/>
</ViewCriteriaItem>
<ViewCriteriaItem
Name="IsSystem"
ViewAttribute="IsSystem"
Operator="="
Conjunction="AND"
Required="Optional"/>
<ViewCriteriaItem
Name="RuleType"
ViewAttribute="RuleType"
Operator="="
Conjunction="AND"
Required="Optional"/>
<ViewCriteriaItem
Name="TargetType"
ViewAttribute="TargetType"
Operator="="
Conjunction="AND"
Required="Optional"
Value=":targetType"
IsBindVarValue="true"/>
<ViewCriteriaItem
Name="KeywordsTransient"
ViewAttribute="*KeywordsTransient*"
Operator="CONTAINS"
Conjunction="AND"
Required="Optional"
UpperColumns="0"/>
</ViewCriteriaRow>
</ViewCriteria>
The performance hit is when i search for attribute: KeywordsTransient.
The attribute is as :
<ViewAttribute
Name="KeywordsTransient"
IsSelected="false"
IsPersistent="false"
PrecisionRule="true"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="VIEW_ATTR"
SQLType="VARCHAR">
<RecalcCondition><![CDATA[return (adf.object.isAttributeChanged("Keywords")]]></RecalcCondition>
<TransientExpression><![CDATA[object.Keywords]]></TransientExpression>
<Dependencies>
<Item
Value="Keywords"/>
</Dependencies>
<Properties>
<SchemaBasedProperties>
<LABEL
ResId="KEYWORDS"/>
</SchemaBasedProperties>
</Properties>
</ViewAttribute>
This attribute is dependent on Keywords attribute of the VO , The keyword getter is as below:
* Gets the attribute value for the calculated attribute Keywords.
* @return the Keywords
public String getKeywords() {
if (((String) getAttributeInternal(KEYWORDS)) == null)
long startTime = System.currentTimeMillis();
String keyword = "";
CSRUtil csrUtil = new CSRUtil();
// get the keyword name list from RuleKeywordTableVO which stores ruleGuid to KeywordName mapping. This VO is Loaded in memory as soon as bean initailizes.
Set<String> keywordList =
csrUtil.getRuleKeywordListFromKeywordMapVO(getRuleGuid());
if (keywordList != null)
Iterator rowIter = keywordList.iterator();
while (rowIter.hasNext())
keyword =
keyword.concat(csrUtil.getKeywordNlsIdFromTable((String) rowIter.next())) +
if (keyword.endsWith(", "))
keyword = keyword.substring(0, keyword.length() - 2);
setKeywords(keyword);
setKeywordsTransient(keyword);
long endTime = System.currentTimeMillis();
logger.severe("Time taken for this rule in millis : "+ (endTime-startTime));
return (String) getAttributeInternal(KEYWORDS);
This getter is creating keyword list using nlsid translation based on other tables data for a rule.
Also, I have loaded the rule vo data in memory using invokeAction on my page as below:
<invokeAction id="ExecuteRuleInvoke" Binds="ExecuteRULE"
Refresh="renderModel" RefreshCondition="#{sdk_core_uifwk_refresh_ctrl.executeNeeded}"/>
<action IterBinding="RuleLibraryVO1Iterator" id="ExecuteRULE"
InstanceName="ComplianceLibraryAMDataControl.RuleLibraryVO1"
DataControl="ComplianceLibraryAMDataControl"
RequiresUpdateModel="true" Action="iteratorExecute"/>
So now when i search for a keywordTransient attribute using query panel the getter is always called for keywords even if the VO data is in memory.
So what am i missing, is the data loaded by invokeAction not visible to the query, or i have to use some other optimization. -
Performance of my query based on cube ? and ods?
hi all,
how to identify the performance of my query based on a cube nor ods. I have requirement which enables to do flat file extraction and the extraction is only once and the records are less too. I need to sort whether my query will be faster based upon cube nor on ods.
Can anyone let me know how to measure the performance of my query based upon cube and ods and how to find out which one will be faster. bcos i need to explain them the entire process of going to load the data directly to ods and do reporting from there nor data loaded directly to cube and do reporting from cube.
thanxs
harithaHi,
ODS is 2 Dimensional so avoid reporting on ODS,
Cube is MultiDim, for analysis perpose we can go reporting on Cube only
Records in ODS are Overwritten whereas in Cube records are Aggregated
and can also do compression on Cube, which will increase the query performance and so data retrieval in cube is faster
Thanks
Maybe you are looking for
-
Failure to launch...audio configuration issue!
I just upgraded to 7.0.2 and now iTunes will not launch. When I try to open iTunes I get the following message: "iTunes cannot run because it has detected a problem with your audio configuration." This has never ocurred before and I don't know how to
-
Date-Time stamp on CQ published pages
Hello, How do I display last-published-date-time stamp for published CQ pages. This is critical to customers, as the date-time stamp determines the relevance of articles. Thanks, Suhas Yogin
-
ı want to unlock my iphone 4
ı want to unlock my iphone 4
-
"Siri" & calendar, task list
I am considering changing from my iPhone 4 to a 5. Will Siri allow with voice commands to add calendar events. I would also like to be able to add or mark complete, items in the task list.
-
Temporarily disabling Duplicate Check
All, We're in the middle of DEMO's for our CRM 7 project in QA. Currently when we create a new customer via the Web UI, we get a long response time. After doing some analysis I noticed that when the save function is executed in the Web UI, the prog