ORACLE学習ノート(四)——データベース最適化
3904 ワード
一、ORACLEデータベースのデータ操作の最適化(一括バインドBulk Binding)
バインド変数パッケージは、次の2つのセクションに拡張されます.
1)FORALL文を使用して、DML(INSERT、UPDATE、DELETE)操作の性能を改善するために一般的に使用されるコレクション(collections)を入力する.
2)出力集合(collections)は,BULK COLLECT句を用い,一般にクエリ(SELECT)の性能向上に用いられる.
(1)データ照会の最適化(BULK COLLECT)
(2)最適化の削除
DELETE /*+ RULE */ from Test_Table;
(3)最適化入力セットの挿入(FORALL)
名前の通り、データを挿入するときに一括バインドを使用するのは、ストレージ・プロシージャを介して配列をカスタマイズする方法で、完全な集合を一度にバインドすることです.次のようになります.
二、ORACLE性能最適化
1、buffer_Cacheサイズの設定と根拠
(1)buffercacheサイズのクエリーと変更
buffercacheの設定はsharedpoolの設定と似ています.一つの場合、buffercacheは1つのgまたは2つのgを設定します.また、buffercacheの設定をSGA targetの中に置くことができます.oracleは自動的にbuffercacheのサイズを設定します.実際の生産では、buffercacheのサイズを手動で設定することがよくあります.次の文は、現在のsgaの各コンポーネントがどれだけ大きいかを調べます.
SELECT component,current_size,min_size FROM v$sga_dynamic_components;
bufferサイズ設定
alter system set db_cache_size=20M scope=memory;(scope=both、buffercacheを設定することもできますが、サイズはここで20 Mとします)
一般的には、DB_という原則があります.CACHE_SIZE = SGA_MAX_SIZE/2~ SGA_MAX_SIZE*2/3、dbcache設定の大きさは一般的にSGA_MAX_SIZEの2分の1から3分の2、つまり全体のSGAの半分から3分の2の空間です.
(2)sgaステータスの表示
SELECT component,current_size,min_size FROM v$sga_dynamic_components;
ここでDEFAULTbuffer cacheはbuffercacheの大きさである
(3)設定値をよく調べる:show parameter sga;
(4)show parameter db_cache_size;
db_の場合cache_sizeの設定値はデフォルト値0で、サイズが設定されていないことを示し、SGAによって自動的に調整される.
どのように変更しますか?altersystem set db_cache_size=200M scope=both;
(5)spfileファイルの表示場所:show parameter spfile;
(6)現在のデータベースで設定されているブロックのサイズ:show parameter db_block_size
2、CLOB性能調整
1)Alter Table test_table_info Modify (position_clob Clob store as securefile(cache));
//すべてのLOBを強制的にSecureFileLOBとして作成する
Alter system set db_securefile = 'FORCE';
2)Alter Table test_table_info Add (
position_clob clob lob(position_clob) store as securefile(cache);
strain_clob clob lob(strain_clob) store as securefile(cache));
3)DB_を使うSECUREFILE初期化パラメータ、データベース管理者(DBA)は、SecureFilesの使用状況を決定します.有効な値は次のとおりです.
(1)ALWAYS:ASSM表領域上のすべてのLOBをSecureFile LOBとして作成しようとしますが、自動セグメント空間管理(ASSM)表領域外の任意のLOBのみをBasicFile LOBとして作成できます.(2)FORCE:強制的にすべてのLOBをSecureFileLOBとして作成する;(3)PERMITTED:SecureFilesの作成を許可する(デフォルト);(4)NEVER:SecureFilesの作成を禁止する;(5)IGNORE:SecureFilesの作成を禁止し、SecureFilesオプションを使用してBasicFilesを強制的に作成した場合のエラーを無視
注:内容は完全オリジナルではなく、私個人が勉強している間に整理して練習したものです.
バインド変数パッケージは、次の2つのセクションに拡張されます.
1)FORALL文を使用して、DML(INSERT、UPDATE、DELETE)操作の性能を改善するために一般的に使用されるコレクション(collections)を入力する.
2)出力集合(collections)は,BULK COLLECT句を用い,一般にクエリ(SELECT)の性能向上に用いられる.
(1)データ照会の最適化(BULK COLLECT)
Create Or Replace Procedure SELECT_BULK_TEST AS
TYPE curtime IS TABLE OF Strainformation.Curtime%TYPE;
TYPE position IS TABLE OF Strainformation.Position%TYPE;
TYPE Strain IS TABLE OF Strainformation.Strain%TYPE;
ctime curtime; -- no need to initialize
pos position;
str strain;
BEGIN
SELECT Curtime,Position,Strain BULK COLLECT INTO ctime,pos,str FROM Strainformation;
FOR i in 1..pos.count LOOP
DBMS_OUTPUT.PUT_LINE(enums(i) || ' ' ||names(i));
END LOOP;
END;
/
(2)最適化の削除
DELETE /*+ RULE */ from Test_Table;
(3)最適化入力セットの挿入(FORALL)
名前の通り、データを挿入するときに一括バインドを使用するのは、ストレージ・プロシージャを介して配列をカスタマイズする方法で、完全な集合を一度にバインドすることです.次のようになります.
create or replace PROCEDURE insert_test AS
TYPE curtime ISTABLE OF Strainformation.Curtime%TYPE INDEXBY BINARY_INTEGER;
TYPE position ISTABLE OF Strainformation.Position%TYPE INDEX BY BINARY_INTEGER;
TYPE Strain ISTABLE OF Strainformation.Strain%TYPE INDEXBY BINARY_INTEGER;
i Integer;
pos Position;
str Strain;
ctime curtime;
-- ,
BEGIN
-- ,
Select Curtime,Position,Strain bulk collect into ctime,pos,str from Strainformation;
FORALL i IN 1..pos.count -- use FORALL statement
insert /*+ append */ into STRAININFO_ALERT(ctime(i),pos(i),s(i),str(i));
commit;
exception
when others then
-- ,
dbms_output.put_line(' !');
rollback;
END insert_test;
二、ORACLE性能最適化
1、buffer_Cacheサイズの設定と根拠
(1)buffercacheサイズのクエリーと変更
buffercacheの設定はsharedpoolの設定と似ています.一つの場合、buffercacheは1つのgまたは2つのgを設定します.また、buffercacheの設定をSGA targetの中に置くことができます.oracleは自動的にbuffercacheのサイズを設定します.実際の生産では、buffercacheのサイズを手動で設定することがよくあります.次の文は、現在のsgaの各コンポーネントがどれだけ大きいかを調べます.
SELECT component,current_size,min_size FROM v$sga_dynamic_components;
bufferサイズ設定
alter system set db_cache_size=20M scope=memory;(scope=both、buffercacheを設定することもできますが、サイズはここで20 Mとします)
一般的には、DB_という原則があります.CACHE_SIZE = SGA_MAX_SIZE/2~ SGA_MAX_SIZE*2/3、dbcache設定の大きさは一般的にSGA_MAX_SIZEの2分の1から3分の2、つまり全体のSGAの半分から3分の2の空間です.
(2)sgaステータスの表示
SELECT component,current_size,min_size FROM v$sga_dynamic_components;
ここでDEFAULTbuffer cacheはbuffercacheの大きさである
(3)設定値をよく調べる:show parameter sga;
(4)show parameter db_cache_size;
db_の場合cache_sizeの設定値はデフォルト値0で、サイズが設定されていないことを示し、SGAによって自動的に調整される.
どのように変更しますか?altersystem set db_cache_size=200M scope=both;
(5)spfileファイルの表示場所:show parameter spfile;
(6)現在のデータベースで設定されているブロックのサイズ:show parameter db_block_size
2、CLOB性能調整
1)Alter Table test_table_info Modify (position_clob Clob store as securefile(cache));
//すべてのLOBを強制的にSecureFileLOBとして作成する
Alter system set db_securefile = 'FORCE';
2)Alter Table test_table_info Add (
position_clob clob lob(position_clob) store as securefile(cache);
strain_clob clob lob(strain_clob) store as securefile(cache));
3)DB_を使うSECUREFILE初期化パラメータ、データベース管理者(DBA)は、SecureFilesの使用状況を決定します.有効な値は次のとおりです.
(1)ALWAYS:ASSM表領域上のすべてのLOBをSecureFile LOBとして作成しようとしますが、自動セグメント空間管理(ASSM)表領域外の任意のLOBのみをBasicFile LOBとして作成できます.(2)FORCE:強制的にすべてのLOBをSecureFileLOBとして作成する;(3)PERMITTED:SecureFilesの作成を許可する(デフォルト);(4)NEVER:SecureFilesの作成を禁止する;(5)IGNORE:SecureFilesの作成を禁止し、SecureFilesオプションを使用してBasicFilesを強制的に作成した場合のエラーを無視
注:内容は完全オリジナルではなく、私個人が勉強している間に整理して練習したものです.