データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Oracleデータベースのメモリチューニング

メモリチューニングは、空きメモリをOracleメモリコンポーネントに分散または再割り当てします。これは主に、Oracleクエリのパフォーマンス調整に使用されます。

今日、すべてのクライアントの主要な問題はデータベースのパフォーマンスに関連しています。このブログでは、データベースのメモリを調整してデータベースのパフォーマンスを向上させる方法について説明します。使用可能なさまざまな種類のメモリ調整方法は次のとおりです。OSレベルのプロセス調整、CPU調整、RAM調整、データベース調整など。このブログではIデータベースのメモリチューニングについて話し合う予定です。

データベースメモリの調整:

データベースのメモリチューニングは、システムグローバル領域(SGA)のチューニングに他なりません。以下は、SGAチューニングを使用した主要なコンポーネントリストです。これらの各コンポーネントについて詳しく見ていきましょう。

  1. プールを維持する
  2. デフォルトプール、リサイクルプール、ストリームプール
  3. DBバッファキャッシュ:空きバッファ、変更されたバッファ、固定されたバッファ
  4. 共有プール

プールを維持する:

毎日使用される特定のパッケージがあります。パフォーマンスを向上させるには、これらのパッケージをSGAに保持する必要があります。手順の助けを借りて、そのパッケージをキーププールに保持できます。SGAに割り当てられたスペースがシャットダウンされた場合、SGAはRAMに再割り当てする必要があります。その時点で、パッケージをキーププールに保持した後でも、洗い流された。次回そのパッケージを再起動して実行するとき、データベースをシャットダウンするまで、パッケージはキーププールに残ります。そうすることで、I/Oを削減します。

ヒット率の助けを借りて、解析コード実行プランがライブラリキャッシュからフラッシュされていることを確認できます。ライブラリキャッシュのヒット率は85%を超える必要があります。

ストリームプール データポンプ用のバッファを作成するために使用されます。毎日、パフォーマンスを向上させるために特定のテーブル(小さなテーブル)が使用されます。これらのテーブルをSGA(プールの保持)に保持することをお勧めします。これにより、ディスクからではなくメモリ自体からデータをフェッチする場合のパフォーマンスが向上します。大きなテーブルには、リサイクルプールがあります。

デフォルトでは、ブロックの形式でこれらのテーブル(小さなテーブル)を選択すると、データバッファキャッシュにフェッチされ、デフォルトプールに保持されます。 。他のテーブルを選択すると、このデフォルトのプールはフラッシュされます。バッファにスペースがある場合は問題ありませんが、そうでない場合は、新しいテーブルに対応するために以前のテーブルをフラッシュします。パフォーマンスを向上させるには、小さなテーブルをデフォルトプールではなくキーププールに保持します。 。データバッファキャッシュのヒット率は95%を超える必要があります。95%未満の場合は、データベースバッファキャッシュのサイズを変更する必要があります。

メモリ調整の主要な部分は、データベースバッファキャッシュと共有プールです。これは、メモリ内の十分なデータを維持するのに役立ちます。誰もがSGAチューニングのためのデータベースバッファキャッシュの基本的な操作を知っている必要があります。ブログの最後に、メモリを調整するためのヒット率を計算するためのサンプルSQLクエリの例をいくつか紹介します。

空きバッファ

変更されたデータは、イメージ(データ)を変更する前に、フェッチされたブロックとデータバッファキャッシュへのコピーを使用します。これらのバッファは空きバッファと呼ばれます。下の画像から、値が1000のディスクまたは値が1000のメモリは同じです。下の画像は空きバッファを示しています:

変更されたバッファ

変更されたバッファは、ダーティバッファとも呼ばれます。ディスク内のイメージとデータのデータバッファキャッシュ内のイメージが変更されましたが、これらのバッファまたはデータはまだディスクに書き込まれていません。これらのバッファはダーティバッファと呼ばれます。

次の画像は、変更されたバッファを示しています。

ピン留めされたバッファ

DBバッファキャッシュのデータは毎回変更されます。サーバープロセスは、これらの変更されたデータをさらにトランザクションのために選択します。これらの選択されたデータは、固定されたデータまたはバッファに他なりません。

物理的な読み取り :OracleがI/Oを実行してディスクから読み取るOracleデータブロック。

論理読み取り :Oracleがデータベースバッファキャッシュ自体からデータを読み取ることで要求を満たすことができる場合、論理読み取りの対象になります。

DBブロックの取得 :Oracleがデータベースバッファキャッシュで必要なデータを見つけると、Oracleはデータがコミットされているかどうかをチェックし、コミットされている場合はバッファからフェッチします。これらのバッファは、DBバッファ取得とも呼ばれます。

一貫した読み取り :データベースバッファキャッシュで、存在し、変更されているがコミットされていないブロック。したがって、データはUNDOデータファイルからフェッチする必要があります。

db_buffer_cacheの目標は、論理読み取りを増やすことです。

ソフト解析 :ライブラリキャッシュですでに実行プランを利用できる場合、ディスクには移動せず、既存の実行プランから解析プラン(解析コード)が作成されます。これはソフト解析と呼ばれます。

ハード解析 :解析コードを作成するために、実行プランが使用可能かどうかを確認します。実行プランが使用可能な場合は、ソフト解析を使用します。実行プランが利用できない場合は、ハード解析を実行します。つまり、ディスクに移動します。

共有プール :共有プールは、ライブラリキャッシュとデータディクショナリキャッシュを組み合わせたものです。

ライブラリキャッシュ: ライブラリキャッシュの目標は、ソフト解析を増やすことです

目標を達成するための方法:

  1. バインド変数の使用

  2. ストアドプロシージャを作成する

  3. ヒット率(共有プールのサイズを大きくしない場合は85%を超える必要があります)

  4. DBMS_Shared_pool(パッケージ)ヒット率は、SQLクエリを使用してメモリを調整する際に主要な役割を果たします。

データディクショナリキャッシュ :行キャッシュとも呼ばれます。共有プールのサイズを大きくしない場合、データディクショナリキャッシュのヒット率は85%を超える必要があります。

以下は、ヒット率を計算するためのサンプルクエリです。

select (sum(pinhits)/sum(pins))*100 as lchitratio from v$librarycache;

select namespace, pins, pinhits, reloads from v$librarycache order by namespace;

dbms_Shared_poolのパッケージを入手するには、@$ORACLE_HOME/rdbms/admin/dbmspool.sqlを実行してください。

select namespace, kept, locks, executions from v$db_object_cache where type like '%PROC%';

データディクショナリキャッシュのヒット率:

select (sum(gets-getmisses-fixed))/sun(gets) as "ddchitratio" from v$rowcache;

ログバッファキャッシュをやり直します:

v$sysstatから名前と値を選択します ここで、'redo%';のような名前

上記のポイントがお役に立てば幸いです。データベースのメモリを簡単に調整できるようになりました。

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


  1. OracleDatabaseでの統計の復元

    このブログ投稿では、Oracle®Databaseで統計を復元するタイミングと方法について説明しています。 はじめに データベース管理者(DBA)として、freshstatisticsを収集すると、オプティマイザーが次善の実行プランを実行することにつながることがよくあります。そのような場合は、パフォーマンスが向上した時点から統計を復元することをお勧めします。 ただし、Oracle Databaseのバージョンが異なれば、統計の処理方法に小さな変更があります。 Oracle 10gは、簡単に復元できるように統計の自動保存を開始しました。 11.1以降、Oracleはより優れた方法を導入

  2. OracleEBS12.2データベースをOracleDatabase19cにアップグレードします

    この投稿では、OracleDatabase19cを使用してOracle®E-BusinessSuite(EBS)12.2を構成する手順について説明します。 はじめに オラクルは最近、EBS12.2でOracleDatabase19cを認定しました。 Oracle EBSデータベースをバージョン12c(12.1.0.2)または11.2.0.4からデータベース19cにアップグレードすると、データベースアーキテクチャがコンテナデータベース(CDB)アーキテクチャに変更されます。 EBSデータベースを以前のバージョンから19にアップグレードする場合、アップグレードプロセスでは、単一のプラガブルデータ