LoginSignup
0
1

同期I/O? 非同期I/O? I/Oスレーブ?

Posted at

本記事の目的

Oracle Database Administration (oracle Gold)の学習がメインである。
個人的に理解するのにわかりにくかったところを記事としてまとめた。
今回は、同期I/O,非同期I/O,I/Oスレーブの言葉の定義を自分の言葉でまとめてみた。

目次

  1. バックアップ取得する工程のお話
  2. 同期I/Oとは
  3. 非同期I/Oとは
  4. I/Oスレーブとは

1. バックアップ取得する工程のお話

ひとえにバックアップを取得するといっても複数の工程がある。

バックアップ取得の流れを以下のイラストをもとにイメージしてほしい。

image.png

バックアップを取得する際、チャネルは以下の作業を行っている。

①チャネルが、バックアップするデータを読み取りに行く

②読みに行ったデータをチャネルがコピー

③出力先として指定しているデバイスにデータを書き込み

このようにバックアップ一つとっても、複数の工程がある。

2.同期I/Oとは

同期I/Oとは、一言で言うと
『団体行動』
である。

もう少し、詳しく記載しよう。
例えば、1でお話ししたバックアップ取得を例にとる。
チャネル数は複数あることを前提に話をする。

それぞれの工程で、チャネルによっては、データを早く読んで暇になるチャネルも存在するかと思う。
→コピーするデータが、10GB しかないものもあれば、1TBものものあるかと思う。
そこで少なからず、データを読み込むときに差が生じる。

image.png

同期I/Oの場合、一つ一つの操作(読み取りや書き込み)が終わったタイミングで
すべてのチャネルが、まとめて次の操作に移る
→チャネルによっては、待機チャネルも存在する

3.非同期I/Oとは

非同期I/Oとは、一言で言うと
『個人行動』
である。

こちらも先ほどのバックアップ取得を例に詳しく記載する。
(チャネル数は複数あることを前提に話をする)

今回は、わかりやすくするために3ステップに分ける

①各チャネルが対応するファイルの読み込み開始

image.png

②あるチャネルの読み込みが完了する

image.png

③読み込みが完了したチャネルから次の作業に入る

image.png

上記に示すように、非同期I/Oは各チャネルのタイミングで次の作業へ移っていく
→同期I/Oとは違い、チャネル全体で同じ作業を行わない!
なんとなく、イメージはつくと思うが、非同期I/Oのほうが、効率良くバックアップ処理を行うことができる。

また、非同期I/Oは、oracleのデフォルト設定である。

4.I/Oスレーブとは

スレーブI/Oとは、一言で言うと
『非同期I/Oが使えないときの疑似的非同期I/O』
である。

前述したとおり、同期I/Oは、非同期I/Oと比べて効率が悪い。
でも、システムによっては、同期I/Oのみの設定しかできないものも存在する。
そういった際に、スレーブI/Oを設定すると、効率が少し上がる。
では、スレーブI/Oとは何なのか
→チャネルの性能を上げることができる設定である。

スレーブI/Oを設定することで、マルチスレッドとなり、
各チャネルのパフォーマンスが向上する。
そうすると、同期I/Oの処理速度が上がってパフォーマンス向上につながる

※非同期I/Oを設定しているときでも、スレーブI/Oの設定自体はできる
でも、その場合、非同期I/Oが優先されてスレーブI/Oは無効となる
詳細は、こちら

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1