Уменьшение размера буфера, используемого SQL (настройка производительности Oracle) - PullRequest
1 голос
/ 30 ноября 2011

Я пытаюсь уменьшить размер буфера, используемого SQL.Ниже приведен план объяснения.

Рассматривая план объяснения, я стремлюсь сосредоточиться на строке 3 ниже

3 NESTED LOOPS  Cost: 1,407  Bytes: 11,902,228  Cardinality: 276,796    

Поскольку стоимость увеличивается с 55 (в строке 2) до 1407

2 INDEX RANGE SCAN INDEX (UNIQUE) SIEBEL.S_PROD_LN_PROD_U1 Cost: 55  Bytes: 247,359  Cardinality: 11,779  

У меня есть несколько вопросов по этому поводу:

  1. Является ли мой анализ выше, чтобы сосредоточиться вокруг этой линии правильно?
  2. В строке 2,он сказал мне, что используется индекс S_PROD_LN_PROD_U1, но на самом деле у нас нет таблицы S_PROD_LN_PROD_U1 в таблице S_PROD_LN.У нас есть индекс S_PROD_LN_U1, хотя.Любая причина, почему план объяснения использовал вид «виртуального» индекса?
  3. Что означает VIEW VIEW SYS.VW_NSO_1 в строке 4

Заранее большое спасибо.

Plan
SELECT STATEMENT  HINT: FIRST_ROWSCost: 2,101  Bytes: 2,563  Cardinality: 1                                                 
    32 NESTED LOOPS  Cost: 2,101  Bytes: 2,563  Cardinality: 1                                              
        29 NESTED LOOPS  Cost: 2,097  Bytes: 2,518  Cardinality: 1                                          
            27 NESTED LOOPS  Cost: 2,095  Bytes: 2,500  Cardinality: 1                                      
                24 HASH JOIN RIGHT ANTI  Cost: 2,092  Bytes: 2,444  Cardinality: 1                                  
                    4 VIEW VIEW SYS.VW_NSO_1 Cost: 1,407  Bytes: 8,857,472  Cardinality: 276,796                            
                        3 NESTED LOOPS  Cost: 1,407  Bytes: 11,902,228  Cardinality: 276,796                        
                            1 TABLE ACCESS FULL TABLE SIEBEL.S_PROD_LN Cost: 83  Bytes: 528  Cardinality: 24                    
                            2 INDEX RANGE SCAN INDEX (UNIQUE) SIEBEL.S_PROD_LN_PROD_U1 Cost: 55  Bytes: 247,359  Cardinality: 11,779                    
                    23 NESTED LOOPS OUTER  Cost: 104  Bytes: 39,200  Cardinality: 28                            
                        20 NESTED LOOPS OUTER  Cost: 50  Bytes: 37,604  Cardinality: 28                         
                            17 NESTED LOOPS OUTER  Cost: 50  Bytes: 36,540  Cardinality: 28                     
                                14 NESTED LOOPS OUTER  Cost: 23  Bytes: 35,700  Cardinality: 28                 
                                    11 NESTED LOOPS OUTER  Cost: 23  Bytes: 34,300  Cardinality: 28             
                                        8 HASH JOIN RIGHT OUTER  Cost: 23  Bytes: 32,900  Cardinality: 28       
                                            5 TABLE ACCESS FULL TABLE SIEBEL.S_PROD_INT_CRSE Cost: 2  Bytes: 32,718  Cardinality: 82    
                                            7 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_PROD_INT Cost: 20  Bytes: 11,252  Cardinality: 29      
                                                6 INDEX RANGE SCAN INDEX SIEBEL.S_PROD_INT_X2_X Cost: 3  
                                        10 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_LIT Cost: 0  Bytes: 50  Cardinality: 1        
                                            9 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_LIT_P1 Cost: 0  Cardinality: 1      
                                    13 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_LIT Cost: 0  Bytes: 50  Cardinality: 1            
                                        12 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_LIT_P1 Cost: 0  Cardinality: 1         
                                16 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_PROD_LN Cost: 1  Bytes: 30  Cardinality: 1                
                                    15 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_PROD_LN_P1 Cost: 0  Cardinality: 1             
                            19 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_PROD_LN Cost: 0  Bytes: 38  Cardinality: 1                    
                                18 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_PROD_LN_P1 Cost: 0  Cardinality: 1                 
                        22 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_PROD_INT Cost: 2  Bytes: 57  Cardinality: 1                       
                            21 INDEX UNIQUE SCAN INDEX (UNIQUE) SIEBEL.S_PROD_INT_P1 Cost: 1  Cardinality: 1                    
                26 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_VOD Cost: 3  Bytes: 56  Cardinality: 1                                
                    25 INDEX RANGE SCAN INDEX (UNIQUE) SIEBEL.S_VOD_U2 Cost: 2  Cardinality: 1                              
            28 INDEX RANGE SCAN INDEX SIEBEL.S_ISS_OBJ_DEF_M3 Cost: 2  Bytes: 36  Cardinality: 2                                    
        31 TABLE ACCESS BY INDEX ROWID TABLE SIEBEL.S_VOD_VER Cost: 4  Bytes: 45  Cardinality: 1                                        
            30 INDEX RANGE SCAN INDEX (UNIQUE) SIEBEL.S_VOD_VER_U1 Cost: 2  Cardinality: 1                                      

1 Ответ

0 голосов
/ 30 ноября 2011

Хорошее объяснение того, как интерпретировать План объяснения Oracle, можно найти здесь: http://www.akadia.com/services/ora_interpreting_explain_plan.html

Интерпретация плана объяснения без знания базовой структуры базы данных, томов таблиц или оператора SQL, запрашивающего эти таблицы,быть очень трудным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...