DB勉強会レポート_2019年02月13日(水)実施分

こんにちは。 DB勉強会レポートをこれまで6本(紹介記事を合わせると7本)公開してきましたが、お陰様で多くのTechRacho読者の方にお読み頂いております。 平素は格別のご贔屓を賜りまして誠にありがとうございます。 これからもDB勉強会レポートならびにTechRachoを宜しくお願い致します。 解説範囲 平成30年度 春期 データベーススペシャリスト試験 午後Ⅱ 問1 設問2 設問3 (1) ⚓ 設問2 [性能見積り・評価]の”DBサーバの性能見積り”の記述中のe ~ fに入れる適切な数値を答えよ。 p.15を開いて下さい。 問題文中にいくつか用語が出てきますが、これらが理解出来ないと何を問われているのかさえピンときませんので、今一度確認しておきましょう。 用語 定義 トランザクション 複数の処理を1つにまとめたもの。* 詳細はQiitaの解説を参照して下さい。 ターンアラウンドタイム システムに処理要求を送ってから、結果の出力が終了するまでの時間。データやコマンドの入力が終了してから、処理結果の出力が終わって次の要求の受け入れが可能になるまでの時間のこと。* これに対し、処理要求の投入が完了してから、処理が終わって出力が始まるまでの時間(システムの処理を待っている時間)のことをレスポンスタイムという。 I/O 機器やシステムなどに、外部からデータや信号を入力(input)したり、外部に出力(output)したりすること。また、そのための回路や装置、ソフトウェアなどのこと。 それでは、空欄を埋めていきましょう。 まずeですが、CPUの1トランザクション当たりの処理時間を問うています。 「(2) DBサーバの性能見積もりの前提」の②と④に目を転じると、以下の情報があります。 ② CPUの1データページ当たりの処理時間は, 0.2ミリ秒である。 ④ トランザクションごとに, 平均50データページにアクセスする。 よって、「0.2ミリ秒/データページ × 50データページ/トランザクション」より、eには10ミリ秒が入ります。 単純な計算問題ですね。 続いてfです。 こちらも単純計算で求められます。 1トランザクション当たり10ミリ秒かかるので、200トランザクションでは「10ミリ秒/トランザクション × 200」で求めることが出来ます。 ただし、単位は「秒」ですので「1000」で除算することをお忘れなく。 解答として、fには2秒が入ります。 時折ミリやナノの乗数を忘却したり混同することがあるかと思いますので、誦んずる自信がない方は今一度以下の表で確認しておきましょう。 単位 10n 10進数表記 テラ(tera) 1012 1,000,000,000,000 ギガ(giga) 109 1,000,000,000 メガ(mega) 108 1,000,000 キロ(kilo) 103 1,000 ミリ(mili) 10-3 0.001 マイクロ(micro) 10-6 0.000001 ナノ(nano) 10-9 0.000000001 ピコ(piko) 10-12 0.000000000001 続いてgです。 この空欄を埋める前に、p.15の「1. 性能見積り」にある以下の説明を確認して下さい。 一般経費申請も, 同様に締日前にピークが見込まれるので, 一般経費申請で必要となるCPUの性能見積もりを行った。 つまり、一般経費申請の「200トランザクション/秒」を考慮してCPUの数を計算することになります。 ここは非常に見落としやすいポイントだと思います(私自身が見落としました)。 さて、問題文の情報とこれまでに導いた解答を元に一つの使用率100のCPU%のパフォーマンスは以下の通りです。 0.2ミリ秒/データページ 10ミリ秒/トランザクション 2秒/200トランザクション 「(1) 性能要件」より、1秒間に200トランザクションを処理することが要求されます。 一つのCPUの使用率を80%に落とすと、「80 ÷ 100」より1.25倍の処理時間がかかります。 つまり、「2秒/200トランザクション × 1.25」より200トランザクション当たり2.5秒かかります。 この処理時間を、80%の使用率で1秒にするのが性能要件です。 そのために何個もCPUが必要になるでしょうか。 やりたいこととしては、CPU個数をn個に増やしてその分処理時間を短縮して最終的に1秒にしたい。 よって、「2.5秒 ÷ nCPU = 1」という式が成り立ちます。 この式を解くと「n = 2.5」、つまり使用率80%のCPU2.5個で処理時間1秒/トランザクションが実現出来ます。 ただし、CPUの個数は整数でしか存在し得ませんので、小数点以下を切り上げる必要があります。 よって、gには3個が入ります。 続いてhです。 問題文中にある「バッファヒット率」とは何でしょうか? 端的に言えば、メモリ上にデータキャッシュやログバッファが存在する確率です。 とはいえ、そもそもバッファとは何のために、どこに存在して、どんな種類があるのかを理解していなければなりません。 技術評論社の記事が非常に分かりやすくまとまっているので、以下の項目の理解に自信のない方はぜひ一読しておくことをおすすめします。 DBMSのアーキテクチャ、記憶装置の構成 => 記憶装置のトレードオフとバッファの考え方―すべてをとることができないとき(1) DBMSと記憶装置の関係、メモリの性質がもたらすトレードオフ => 記憶装置のトレードオフとバッファの考え方―すべてをとることができないとき(2) システムの特性によるトレードオフ => 記憶装置のトレードオフとバッファの考え方―すべてをとることができないとき(3) 上記の解説ページを読むと、バッファヒット率はデータキャッシュがメモリ上に存在しない場合の1トランザクションあたりの処理時間を問うていることが分かります。 さて、「データベースのバッファヒット率が0%」の場合ですが、この場合はメモリ上にデータが存在しないので、全てストレージ上のデータにアクセスして取り出さなければなりません。 それにどのくらいの時間が掛かるのでしょう? 「(2) DBサーバの性能見積もりの前提」の③と④を見ると、以下の情報を確認出来ます。 ③ 1データページ当たりのストレージへのI/O時間は, 20ミリ秒である。 ④ トランザクションごとに, 平均50データページにアクセスする。 「データベースのバッファヒット率が0%」なので、50データページ分全てストレージを見に行かなくてはなりませんので、1ランザクション当たりのI/O時間は「20ミリ秒/データページ × 50データページ/トランザクション」で求めることが出来ます。 よって、hには1000ミリ秒、つまり1秒が入ります。 最後にiです。 バッファヒット率が60%のCPU処理時間とI/O時間の合計を求めます。 バッファヒット率が60%ということは、「50データページ/トランザクション × 0.6」より、 30データページはメモリに存在し、残りの20データページはストレージ上に存在します。 また、問題文より、1データページ当たりの処理時間は以下の通りです。 CPU – 0.2ミリ秒 I/O – 20ミリ秒 まずはCPU処理時間から求めていきましょう。 CPUは50データページ分の処理を行いますので、「0.2ミリ秒 × 50データページ」より「10ミリ秒」が求まります。 恐らくここでメモリ上に存在する30データページで計算してしまう読者の方がいらっしゃると思います。 その場合、ストレージ上の20ページはメモリ上に読まれただけで何の処理もされないことになってしまいます。 あくまで、50データページ/トランザクション全体を処理します。 そして、I/O時間を求めます。 ここではストレージ上に存在する20ページ分のI/O時間を求めれば良いわけです。 よって、「20ミリ秒 × 20データページ」より「400ミリ秒」が求まります。 CPU処理時間とI/O時間を合計すると「10ミリ秒 + 400ミリ秒」より「410ミリ秒」が求まりますが、解答の単位は「秒なので」「1,000」で除算することをくれぐれをお忘れなく! よって、iには0.41秒が入ります。 ⚓ 設問3 [クラウドサービスの選定・評価]について, (1) ~ (3)に答えよ。 まず最初に、この設問は経費採算システムの「旅費交通費精算機能」、「一般経費精算機能」、「仮払金精算機能」のうち、どれを対象にしているかを把握し、探すべき情報を明らかにする必要があります。 p.15の「2. 評価」の説明を確認すると、以下のような記述があります。 現行システムの旅費交通費精算機能のDBサーバには, … Continue reading DB勉強会レポート_2019年02月13日(水)実施分