Oracleアーキテクチャの知識ポイントの運用

5006 ワード

アーキテクチャに関する最適化の問題:
  • データベースはとても大きくて、アクセス量はとても高くて、共有プールはとても小さいです:このように共有プールの中で多くの解析したsql文を格納することができなくて、多くの硬い解析を招いて、このようにデータベースはとても遅いです.この時は共有プールを増やします.自動管理であればSGAの大きさを大きくします.
  • :ある普段あまりアクセスしないデータベースのホストは4 Gメモリしかなくて、3 GのSGAを開拓して、500 mのPGA、OSオペレーティングシステムのメモリが不足するため、ホストの運行が遅くて、私達はSGAの大きさを減らします.
  • データキャッシュ領域が小さすぎるために大量の物理読みが発生した場合、SGAを大きくする.
  • 並べ替えに一時的な表領域が使用されると、PGAが小さすぎることを示し、システムに余分なメモリがある場合は、PGA(一般的にOLAPシステム)
  • に多くの部分を割り当てることを考慮することができる.
  • データベースに大量の更新操作がある場合、大量のログが発生してログ切替が頻繁になり、ログ切替の過程でデータベースが停滞し、性能を高めるためにログファイルのサイズを大きくする必要がある.
  • アプリケーションがORA-01555エラーを常に検出しているため、次のモジュールに値を与えることができない場合、生産に障害が発生します.なぜこのsqlがこんなに遅く実行されているのかを確認する必要があります.最適化方法:インデックスを追加し、履歴データを整理し、テーブルのレコードを小さくしたり、undo_を大きくしたりします.retentionの値(この値は推奨値であり、強制ではない)は、undoテーブルスペースを大きくすることもできます.

  • 具体的なsql最適化:
  • 構造環境+最適化されていない(単車速度:40+秒
    sqlplus drop table t purge; create table t (x int); alter system flush shared_pool; set timing on
     create or replace procedure proc1 as begin for i in 1..100000
    
     loop execute immediate ‘insert into t values(‘||i||’)’; commit; end loop; end; /
    exec proc1;
    col sql_text format a30
    set pagesize 1000
    select t.sql_text,t.sql_id,t.parse_calls,t.executions from v$sql t where sql_text like '%insert into t values%' and rownum<100;

  • ##resetpool.sql:
    drop table t purge; create table t(x
    int); alter system flush shared_pool; set pagesize 1000 col sql_text format a30
  • バインド変数、オートバイ速度:8+秒
    create or replace procedure proc2
    
    as
    
    begin
    
            for i in 1..100000
    
            loop
    
                    execute immediate
    
                    'insert into t values( :x )' using i;
    
                    commit;
    
            end loop;
    
    end;
    
    /
    select t.sql_text,t.sql_id,t.parse_calls,t.executions from v$sql t where sql_text like '%insert into t values%';

  • 静的書き換え、自動車速度:6+秒
    create or replace procedure proc3
    
    as
    
    begin
    
            for i in 1..100000
    
            loop
    
                    insert into t values( i );
    
                    commit;
    
            end loop;
    
    end;
    
    /

  • ロット提出、列車速度:2秒
    create or replace procedure proc4
    
    as
    
    begin
    
            for i in 1..100000
    
            loop
    
                    insert into t values( i );
    
            end loop;
    
    commit;
    
    end;
    
    /

  • 集合書き方、飛行機速度:.14秒
    insert into t select rownum from dual connect by level <=100000;

  • 直接経路、ロケット速度:.89秒、10万で.23なので量が必要で速く見えます.
    create table t as select rownum x from dual connect by level <= 1000000;

  • 並列に設置され、宇宙船の速度:どれだけのcpuが必要か:本機の実測1.05秒は6より性能が悪く、一般的に機械が空いていて性能が強い場合に使用される.
    create table t nologging parallel 4 as select rownum x from dual connect by level <=1000000;