HOME»データベーススペシャリスト掲示板»H23午後I問3「データ入出力処理時間」について
投稿する
»[0485] R3年 午後2 問2 設問2 (3)について 投稿数:4
»[0484] H29午後2問2設問3(1) サブタイプについて 投稿数:8
H23午後I問3「データ入出力処理時間」について [0487]
おばけさん(No.1)
表題の件について、過去問の解説だけだと理解が厳しいため質問させてください。
CPU処理時間は、CPU処理時間とデータ入出力処理時間から構成される旨が問題文に記載があります。問題文に従えば、データページを「順次」に入出力する場合、SQL処理時間は以下の式で算出できると記載があります。
SQL処理時間=MAX(CPU処理時間, 非同期データ入出力処理時間)
また、設問2の(g)(h)を読み進めると、CPU処理時間とは以下の構成である旨が解説等に記載があります。
CPU処理時間=データ入力処理のCPU処理時間(①)+データ出力処理のCPU処理時間(②)
①:全データページを順次にデータバッファに入力するのに必要なCPU処理時間
②:全行をデータバッファからプログラム内に移動するのに必要なCPU処理時間
一方で、データ入出力処理時間については詳細な記載がないように見えます。
「データ入出力処理時間」とは、具体的にどのような処理の時間を指しますでしょうか。
CPU処理時間と同様に以下分割できる認識をしておりますが、具体的にどのような処理がイメージできないため、教えていただけないでしょうか。
データ入出力処理時間=データ入力処理時間+データ出力処理時間
※解説を見ると、SQL1AもSQL2Aもデータ入力時間はどちらも1000秒、データ出力時間はどちらも0秒ですが、同じになる理由も教えていただきたいです。
以上よろしくお願いいたします。
CPU処理時間は、CPU処理時間とデータ入出力処理時間から構成される旨が問題文に記載があります。問題文に従えば、データページを「順次」に入出力する場合、SQL処理時間は以下の式で算出できると記載があります。
SQL処理時間=MAX(CPU処理時間, 非同期データ入出力処理時間)
また、設問2の(g)(h)を読み進めると、CPU処理時間とは以下の構成である旨が解説等に記載があります。
CPU処理時間=データ入力処理のCPU処理時間(①)+データ出力処理のCPU処理時間(②)
①:全データページを順次にデータバッファに入力するのに必要なCPU処理時間
②:全行をデータバッファからプログラム内に移動するのに必要なCPU処理時間
一方で、データ入出力処理時間については詳細な記載がないように見えます。
「データ入出力処理時間」とは、具体的にどのような処理の時間を指しますでしょうか。
CPU処理時間と同様に以下分割できる認識をしておりますが、具体的にどのような処理がイメージできないため、教えていただけないでしょうか。
データ入出力処理時間=データ入力処理時間+データ出力処理時間
※解説を見ると、SQL1AもSQL2Aもデータ入力時間はどちらも1000秒、データ出力時間はどちらも0秒ですが、同じになる理由も教えていただきたいです。
以上よろしくお願いいたします。
2023.05.28 11:21
gawaさん(No.2)
データ入出力は、ディスクストレージの読み書きの処理です。入力時間と出力時間の合計で正しいです。
1Aと2Aで同じ1000秒になるのは
入力時間→どちらも全データページを読み込むので同じ1000秒
出力時間→問題文に書いてありますが測定ではストレージへの出力は行わないので0秒
入力時間1000秒の根拠
2AのSQL処理時間1000秒=max(cpu処理時間=10秒、非同期入出力時間=?)
より、非同期入出力時間?は1000秒。
列c4に索引定義されてないので、1Aと2Aともに全データページ読む非同期入出力処理になるとなる。2Aでは結果行なしになるようなwhere句(c4が負である)となってるという点、これらを抑えておいてください
1Aと2Aで同じ1000秒になるのは
入力時間→どちらも全データページを読み込むので同じ1000秒
出力時間→問題文に書いてありますが測定ではストレージへの出力は行わないので0秒
入力時間1000秒の根拠
2AのSQL処理時間1000秒=max(cpu処理時間=10秒、非同期入出力時間=?)
より、非同期入出力時間?は1000秒。
列c4に索引定義されてないので、1Aと2Aともに全データページ読む非同期入出力処理になるとなる。2Aでは結果行なしになるようなwhere句(c4が負である)となってるという点、これらを抑えておいてください
2023.05.28 15:10
logres_fanさん(No.3)
★DB ブロンズマイスター
データ入出力処理時間は、データベースに接続している時間でいいんじゃないですか。
順次100万ページの読み取りを開始します
CPU処理も頑張れ!って過酷だよね。
答えありきですが、出題意図はCPU処理時間のようです。(データ入出力処理時間はプラフかな)
混乱して苦手意識にならないように、さらっと流していいんじゃないかと思います。
IPA講評も必見です。
順次100万ページの読み取りを開始します
ウィーンガチャンウィーンガチャンピーピーピー・・・ウィーンガチャンウィーンガチャンZzz
順次100万ページの読み取りを完了しました。1000秒。CPU処理も頑張れ!って過酷だよね。
答えありきですが、出題意図はCPU処理時間のようです。(データ入出力処理時間はプラフかな)
混乱して苦手意識にならないように、さらっと流していいんじゃないかと思います。
IPA講評も必見です。
2023.05.29 01:51
おばけさん(No.4)
gawaさん
ご回答ありがとうございます。
→秒数が同じであるのは、AもBもデータページ数が同じであり、どちらも全データページを読み込む。また出力(外部ファイルへSELECTの結果行の出力はしない)もない。で理解しました。
データ入出力は、ディスクストレージの読み書きの処理(今回は出力はない)とのことですが、例えばSQL1xやSQL2x(どちらも表探索)、SQL3x(索引あり)を実行した場合、以下のような動きになる理解であっておりますでしょうか。
SQL1A:SELECT * FROM TA
①索引はないため、索引に関する処理なし
②TAの一行目から順次ディスクにアクセス(データ入力処理(1000秒))
③全データページをデータバッファに入力(CPU(入力)処理時間(10秒))
④全行をデータバッファからプログラム内に移動(CPU(出力)処理時間(SQL1Aのみ、2000秒)
SQL3A:SELECT * FROM TA WHERE C2 BETWEEN 1 AND 1000
①バッファから索引をヒットさせる(表6の上の問題文の記載の通り)
②索引からディスクのTAのレコードを検索(データ入力処理)
③④は上記と同じ
ご回答ありがとうございます。
>入力時間→どちらも全データページを読み込むので同じ1000秒
>出力時間→問題文に書いてありますが測定ではストレージへの出力は行わないので0秒
→秒数が同じであるのは、AもBもデータページ数が同じであり、どちらも全データページを読み込む。また出力(外部ファイルへSELECTの結果行の出力はしない)もない。で理解しました。
データ入出力は、ディスクストレージの読み書きの処理(今回は出力はない)とのことですが、例えばSQL1xやSQL2x(どちらも表探索)、SQL3x(索引あり)を実行した場合、以下のような動きになる理解であっておりますでしょうか。
SQL1A:SELECT * FROM TA
①索引はないため、索引に関する処理なし
②TAの一行目から順次ディスクにアクセス(データ入力処理(1000秒))
③全データページをデータバッファに入力(CPU(入力)処理時間(10秒))
④全行をデータバッファからプログラム内に移動(CPU(出力)処理時間(SQL1Aのみ、2000秒)
SQL3A:SELECT * FROM TA WHERE C2 BETWEEN 1 AND 1000
①バッファから索引をヒットさせる(表6の上の問題文の記載の通り)
②索引からディスクのTAのレコードを検索(データ入力処理)
③④は上記と同じ
2023.05.29 09:39
おばけさん(No.5)
logres_fanさん
ご回答ありがとうございます。
→本筋ではないと理解はしていますが、ちょっと気持ち悪く・・・。
確かに苦手意識にならないようにさらっと流そうかと思います。IPA講評についても確認してみます。
ご回答ありがとうございます。
>答えありきですが、出題意図はCPU処理時間のようです。(データ入出力処理時間はプラフかな)
>混乱して苦手意識にならないように、さらっと流していいんじゃないかと思います。
>IPA講評も必見です。
→本筋ではないと理解はしていますが、ちょっと気持ち悪く・・・。
確かに苦手意識にならないようにさらっと流そうかと思います。IPA講評についても確認してみます。
2023.05.29 09:41
gawaさん(No.6)
ご理解であっていると思います。問題文読んでいて私も混乱してきました。データバッファへの入力って、データ入出力じゃないのか?と。
なので、以下のように解釈してみました。
同期データ入出力
データページの1ページ目にランダムアクセス➡その後、バッファに入力+プログラムに渡す
データページの2ページ目にランダムアクセス➡バッファに入力+プログラムに渡す
・・・をNページ分、直列に繰り返す
非同期データ入出力
・全てのデータページに順受アクセス
・バッファに入力➡プログラムに渡す
を並行して行う
なので、以下のように解釈してみました。
同期データ入出力
データページの1ページ目にランダムアクセス➡その後、バッファに入力+プログラムに渡す
データページの2ページ目にランダムアクセス➡バッファに入力+プログラムに渡す
・・・をNページ分、直列に繰り返す
非同期データ入出力
・全てのデータページに順受アクセス
・バッファに入力➡プログラムに渡す
を並行して行う
2023.05.29 17:59
その他のスレッド
»[0486] 平成30年春午後Ⅱ 設2のg について 投稿数:3»[0485] R3年 午後2 問2 設問2 (3)について 投稿数:4
»[0484] H29午後2問2設問3(1) サブタイプについて 投稿数:8