DB勉強会レポート_2019年01月15日(火)実施分【後編】

こんにちは。 前編では設問1 (3)を解説しました。 もう一息です、頑張りましょう! 今回の解説範囲 平成30年度 春期 データベーススペシャリスト試験 午後Ⅰ 問3 設問1 (4) ⚓ 設問1 (4) 作業W5(表領域設計)について、表5中のア〜キに入れる適切な字句を、表5中の下線部分の用語を用いて答えよ。 設問に関する情報を問題文中から探し整理していきましょう。 表2 物理DB設計及び実装の作業工程表(抜粋) 作業順 作業ID 作業名 作業内容 5 W5 表領域設計 テーブル及び索引のストレージ所要量を見積もり、表領域をストレージに割り当てる設計を行う。 表5 可変長列があるテーブルのストレージ所要量を見積もる計算の手順(未完成) 手順 手順の内容 1 テーブルの見積行数, 平均行長(バイト)及び最大行長(バイト)を得る。 2 RDBMSで指定できるページ長の中から, アの行を1行以上格納できるページ長を決め, ページ長からヘッダ部を除いた有効ページ長(バイト)を得る。 3 テーブルに行をロードした後, ページあたり1行以上を挿入したい場合, 次の不等式を満たす適切な空き領域率(%)を決める。  平均行長 ≦ イ × 空き容量 ÷ 100 4 次の計算式によって, テーブルのストレージ所要量(バイト)を求める。  ページ当たりの平均行数 = イ ÷ ウの小数点以下を切捨て  必要ページ数 = エ ÷ オの小数点以下を切上げ  テーブルのストレージ所要量 = カ × キ それぞれで求めるものを整理すると、 手順1: 見積行数、平均行長、最大行長 手順2: 有効ページ長 手順3: 空き領域率 手順4: ストレージ所要量 になります。 さて、表5に「可変長列」について、固定長列との違いと併せて確認しておきましょう。 種別 説明 データ型例 長所 短所 固定長 実データサイズとは関係なく格納領域のバイト数が定義される CHAR 必要ストレージ量を見積もり易い 実データと格納領域に乖離が生じやすく、ストレージを無駄遣いし易い 可変長 データサイズに合わせて格納領域のバイト数が定義される NVARCHAR, VARCHAR, LVARCHAR ストレージを効率良く活用出来る 必要ストレージ量を見積もり辛い 参考:固定長文字 (CHARACTER) 型と可変長文字 (CHARACTER) 型_IBM Knowledge Center 次に、下線部分の用語について確認します。 用語 意味 単位 見積行数 テーブルに格納されるであろう行数 行 平均行長 テーブルの行あたりの平均データサイズ バイト 最大行長 テーブルの行あたりの最大データサイズ バイト ページ長 ページあたりのデータサイズ。有効ページ長 + ヘッダサイズ バイト 有効ページ長 ページ長 – ヘッダサイズ バイト ページ当たりの平均行数 ページあたりの格納されている行数 行 必要ページ数 テーブルの行を格納するために必要なページ数 ページ 解説 それでは、それぞれの空欄に入る選択肢を考えていきましょう。 ア 有効ページ長(バイト)は「ア × 行数」で求められることが分かります。 さて、ここで小学生の時に習った「答えの単位は非乗数(かけられる数)と一致する」という算数の知識がヒントになります。 例えば、一人当たりの参加費500円の読書会に20人が参加した時の集まった合計額を求める時の式は、「500円 × 20人 = 10,000円」です。 非乗数の500円と答えの10000円の単位は一致するというのが基本です。 それを踏まえると、「ア × 行数 = 有効ページ長(バイト)」のアには、単位が「バイト」の用語が入ることが分かります。 バイトの単位を持つ候補となる下線部分の用語は、「平均行長」「最大行長」「ページ」の三つです。 ただし、「一行以上格納できるページ長を決め」とありますので、ページの中にページを格納するのは構造的におかしいと分かります。 よって、選択肢は「平均行長」と「最大行長」の二つに絞られました。 問題は「可変長列」があるテーブルのストレージ所要量の見積もりだということです。 格納領域は実データサイズに依存するので、小さければごく少ないストレージ領域しか使わないし、大きければ多くの領域を使います。 もし「平均行長」で見積もると、それより大きなデータサイズになった時、容量が溢れてしまいます。 可変長列である以上、ワーストケース、つまり最大のデータサイズを見積もらなければなりません。 よって、[ ア ]には「最大行長」が入ります。 イ / ウ まず空欄イですが、手順4で空欄ウとともに求めてしまう方が難易度が低いかと思います。 求めるのはページあたりの平均行数です。 ページの図ではきっちり3行ずつページに格納されていますが、実際にはその数はバラバラであることが多いです。 そこで、平均でページあたりどのくらいの行数が格納されているかを計算する必要性が出てきます。 いきなり空欄を埋めるのは見当がつかなくて辛い(典型的な文系脳)。 そこでまた小学生で習ったことに立ち返りましょう。 こんな例はどうでしょう? ある対荷重1,000kgエレベーターは平均で何人の人を乗せられるか、という問題です。 乗員の体重はひとによってまちまちですが、2018年01月30日現在の日本人平均体重56kgで見積もります。 平均乗員数を求めると「1,000kg ÷ 56kg = 17.857」、小数点以下切り捨てで「17人」となります。 このように、「入れ物の大きさ」を「中味の平均の大きさ」で除算すると、「その入れ物に平均でどのくらい入るか」を求めることが出来ます。 さて、手順4に目を転じましょう。 「入れ物 = ページの大きさ」は溢れてしまわないようにワーストケースを想定する必要がありますので、「有効ページ長」、「中味 = 行の平均の大きさ」は「平均行長」が当てはまります。 よって、イには「有効ページ長」、ウには「平均行長」がそれぞれ入ります。 … Continue reading DB勉強会レポート_2019年01月15日(火)実施分【後編】