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

OracleExadataスマートスキャン機能

このブログでは、SQL処理がExadataおよび使用例とどのように異なるかについての説明など、Oracle®Exadata®SmartScanfeatureの詳細について詳しく説明しています。

はじめに

オラクルは、2008年に、エンジニアリングシステムファミリーの最初の1つとしてExadataを設計および導入しました。ユーザーによって構成、インストール、調整、および管理される従来のデータベースシステムとは異なり、エンジニアリングされたシステムには、OS、データベース、メモリ、ストレージなどの必要なすべてのコンポーネントが、ソリューションプロバイダーによって事前にインストール、構成、調整、および最適化されています。オラクル。

Exadataマシンにはさまざまなコンポーネントがあります。次のコンポーネントが主要なコンポーネントです:

  • データベースサーバー :データベースソフトウェア、自動ストレージ管理(ASM)、またはOracleグリッドインフラストラクチャを実行するエンタープライズクラスのサーバー。

  • ストレージサーバー :データベースサーバーからのI/O要求とユーザーに返されるデータの要求を管理するExadataストレージサーバーソフトウェアを実行するストレージサーバーまたはセル。

  • InfiniBandネットワーク :内部Exadataネットワークは、主に高性能コンピューティング環境向けに設計されたInfiniBand上に構築されています。

Exadataには、データベースのパフォーマンスを向上させるExadata Storage Software(ESS)と呼ばれるソフトウェアが付属しています。各ストレージセルにインストールされているストレージ管理サーバーであるESSは、ストレージサーバーを管理し、ストレージ関連の要求についてデータベースサーバーと通信します。

ESSの主な機能

ESSの主な機能は次のとおりです。

  • フラッシュキャッシュ :フラッシュキャッシュは、最近アクセスしたオブジェクトをキャッシュするセルサーバー上の高性能キャッシュです。

  • フラッシュログ :Flashログは、REDOログ書き込み用の高性能、低レイテンシ、信頼性の高い一時ストアを提供します。

  • EHCC :Exadata Hybrid Columnar Compression(EHCC)は、最高レベルのデータ圧縮を可能にします。 EHCCは、データを圧縮単位と呼ばれる行のセットに編成します。 。圧縮ユニット内で、EHCCはデータを列ごとに整理してから、データを圧縮します。

  • ストレージインデックス :ストレージインデックスは、ストレージサーバー上のディスクからデータを読み取るために費やされる時間を削減するように設計されたストレージサーバー上のメモリ内構造です。

  • セルのオフロード :従来のストレージ設計とは異なり、Exadataストレージセルは、一部のワークロードを内部で処理して、コンピューティングノードまたはデータベースノードの全体的な負担を軽減するように設計されています。このプロセスはセルオフロードと呼ばれます。

  • スマートスキャン :スマートスキャンを使用すると、SQL処理のほとんどをデータベース層ではなくストレージ層で実行できるため、クエリのパフォーマンスが大幅に向上します。スマートスキャンは、データベース層に送信されるデータの量を減らし、それによってデータベースノードのCPU使用率を減らします。

SQL処理

従来、SQL処理はデータベースサーバーでのみ発生します。 Exadataでは、SQL処理は分割されており、ストレージ層でも実行されます。

従来のSQL処理

次の図に示すように、次の手順は従来のSQL処理を構成します。

OracleExadataスマートスキャン機能
  1. クライアントがクエリを送信します。
  2. このアクションにより、全表スキャンがトリガーされます。
  3. データベースは、スキャンされているテーブルを含むファイルと対応するエクステントにリクエストをマッピングします。
  4. フルスキャンと同様に、データベースはI/O操作を発行してすべてのブロックを読み取ります。
  5. テーブルのクエリされたすべてのブロックがメモリに読み込まれます。
  6. プロセスは、述語を満たす行をブロックで検索します。
  7. 最後に、要求された行がクライアントに返されます。

大きなテーブルの場合、そのテーブルのすべてのブロックが読み取られ、ストレージネットワークを介して転送され、メモリにコピーされます。プロセスは多くの不要な行を読み取り、要求されたSQL操作を完了するためにメモリに読み込まれます。大量の送信データは帯域幅を消費し、応答時間に影響を与え、データベース層に不要な負担をかけます。

ExadataサーバーのSQL処理

Exadataストレージを使用すると、データベースロジックが組み込まれたExadataストレージソフトウェアを使用するため、SQL処理がはるかに効率的に処理されます。次の手順は、次の図に示すように、ExadataSQL処理で構成されています。

OracleExadataスマートスキャン機能
  1. クライアントがクエリを送信します。
  2. データベースサーバーは、クエリ基準を含むインテリジェントデータベース(iDB)メッセージを作成します。このiDBメッセージは、ラック内のすべてのストレージサーバーに送信されます。
  3. cellsrv ESSのコンポーネントは、データブロックをスキャンして、要求を満たす一致する行と列を特定します。
  4. すべてのストレージサーバーはクエリ条件を並行して実行し、interconnectを使用して、関連する行または最終結果のみをデータベースサーバーに送信します。
  5. データベースは結果を統合し、行をクライアントに返します。
スマートスキャンの要件

スマートスキャンを使用するための要件は次のとおりです。

  • スマートスキャンは、全表スキャンまたは全索引スキャンにのみ使用できます。
  • クエリはダイレクトパス読み取りを実行する必要があります。
  • データベース初期化パラメータCELL_OFFLOAD_PROCESSINGを設定する必要があります TRUEへ 。
  • Exadatacellsに完全に保存されているディスクグループにセグメントを保存する必要があります。
  • セグメントデータを格納するASMディスクグループには、次の属性設定が必要です。– compatible.rdbms =11.2.0.0.0 (またはそれ以降)– compatible.asm =11.2.0.0.0 (またはそれ以降)– cell.smart_scan_capable =TRUE
スマートスキャンの例

統計に対するスマートスキャンの効果を測定するには、最初にスマートスキャンを有効にしてから無効にして、次の手順を実行します。

ステップ1:データベースに接続する

次のコマンドを実行して、SQL*Plusを使用してデータベースに接続します。

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

ステップ2:統計を確認する

次のクエリを実行して、統計がゼロまたはゼロに近いことを確認します。

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

ステップ3:スマートスキャンを無効にして選択クエリを実行する

スマートスキャンを無効にするオプティマイザヒントを使用して、次の選択クエリを実行します。

SQL> select /*+ OPT_PARAM('cell_offload_processing' 'false') */ count(*)
from sales where time_id between '01-JUN-2017' and '30-OCT-2017'
and amount_sold = 1;

COUNT(*)
----------
134055

ステップ4:統計を再度確認する

次のコマンドを実行して、統計を再度確認します。手順3でクエリによって処理されたすべてのデータ(物理読み取り合計バイト)は、ストレージネットワーク(セル物理IO相互接続バイト)を介してデータベースサーバーに返されることに注意してください。

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- -----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           759.429688
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

ステップ5:統計をリセットする

次のコマンドを実行してセッションをデータベースに再接続し、セッションレベルの統計をリセットします。

[oracle@nd01db01 ~]$ sqlplus nd/nd
SQL*Plus: Release 11.2.0.3.0 Production...

ステップ6:統計を再度確認する

次のクエリを実行して、統計がゼロまたはゼロに近いことを確認します。

SQL> select a.name, b.value/1024/1024 MB from v$sysstat a, v$mystat b
where a.statistic# = b.statistic# and (a.name in ('physical read total bytes',
'physical write total bytes', 'cell IO uncompressed bytes')
or a.name like 'cell phy%');

NAME	                                                           MB
--------------------------------------------------------------- ---
physical read total bytes	                                       0
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           0
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         0
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      0
cell IO uncompressed bytes	                                    0

10 rows selected.

ステップ7:スマートスキャンを無効にせずに選択クエリを実行する

スマートスキャンを無効にするオプティマイザヒントを指定せずに、次の選択クエリを実行します。

SQL> select count(*) from sales where time_id between '01-JUN-2017'
and '30-OCT-2017'and amount_sold = 1;

COUNT(*)
-------
134055

ステップ8:統計を確認する

次のクエリを実行して、統計を確認します。手順4と同様に、クエリは引き続き約759MBのI/ O(物理読み取り合計バイト)を実行することに注意してください。ただし、今回は1.7 MBのみがDBサーバーに返されます(セル物​​理IOinterconnectバイト)。これは、スマートスキャンが実行された結果です。この場合、述語オフロードに適格なセルの物理IOバイトは物理読み取りの合計バイトに等しく、スマートスキャンによって返されるセルの物理IO相互接続バイトはセルの物理IO相互接続バイトに等しいため、スマートスキャンはこのクエリに関連付けられたI/Oに作用します。 。

SQL> select a.name, b.value/1024/1024 mb from v$sysstat a, v$mystat b where a.statistic# = b.statistic# and (a.name in ('physical read total bytes', 'physical write total bytes','cell IO uncompressed bytes') or a.name like 'cell phy%');

NAME                                                             MB
----------------------------------------------------------------	----------
physical read total bytes	                                       759.429688
physical write total bytes	                                    0
cell physical IO interconnect bytes	                           1.71562805
cell physical IO bytes saved during optimized file creation	   0
cell physical IO bytes saved during optimized RMAN file restore	0
cell physical IO bytes eligible for predicate offload	         759.429688
cell physical IO bytes saved by storage index	                  0
cell physical IO bytes sent directly to DB node to balance CPU	0
cell physical IO interconnect bytes returned by smart scan	      1.71562805
cell IO uncompressed bytes	                                    759.429688

10 rows selected.
結論

Exadataのスマートスキャン機能を使用すると、SQL処理をデータベース層ではなくストレージ層で実行して、クエリのパフォーマンスを向上させることができます。 SmartScanは、データベース層に送信されるデータの量を減らし、それによってデータベースノードのCPU使用量を減らします。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。

データベースサービスとRackspaceアプリケーションサービスの詳細をご覧ください。


  1. データベース管理者向けの新しいOracle19c機能

    Oracle®Databaseバージョン19cでは、多数の新機能と改善された機能が導入されました。 はじめに Oracle 19cは、Oracle Database 12cリリース2製品ファミリの最後であり、長期的なサポートがあります。 Linux®、Windows®、Solaris®、HP /UX®、AIX®プラットフォーム、およびOracleCloudで使用できます。 Oracle 19cは、すべての運用および分析ワークロードに対して最高のパフォーマンス、スケーラビリティ、信頼性、およびセキュリティ機能をお客様に提供します。 機能 データベース管理者(DBA)のタスクを簡単にする新機能

  2. マルウェアの WordPress データベースをスキャン

    最近、データベースで奇妙なことに気付きましたか?不明なテーブルが多数表示されましたか、またはオプション テーブルに不明な URL があることに気付きましたか? これらは、データベースがハッキングされた典型的な兆候です。 WordPress データベースには、WordPress ウェブサイトからの情報が保存されます。データベースがハッキングされると、ハッカーは情報を盗んだり、Web サイトを別の Web サイトにリダイレクトしたりできます。 しかし心配はいりません。感染したデータベースは、WordPress サイトの所有者が直面する一般的な問題です。そして、ハッキングされたデータベースを回