Azure Database Administrator Associate(DP-300) 無料問題 1 / 10 ・ 分野1: データ プラットフォーム リソースの計画と実装
ログを貯めるヒープの LogData テーブルに PAGE 圧縮を設定してある。テーブルには検索用の非クラスター化インデックスが1つある。毎晩のバッチが INSERT INTO ... SELECT で行を足しているが、テーブルの大きさが見積もりどおりに減らない。夜間に足した行のページにも PAGE 圧縮を効かせる手として正しいものはどれか。
- ALTER TABLE ... REBUILD WITH (DATA_COMPRESSION = PAGE) でヒープを作り直す
- 非クラスター化インデックスを PAGE 圧縮で作り直す。ヒープの新しいページにも同じ圧縮が当たる
- バッチの INSERT INTO ... SELECT に WITH (TABLOCK) を付ける。非クラスター化インデックスはそのまま残してよい
- 何もしない。ヒープのページがいっぱいになった時点で、新しいページにも PAGE 圧縮が当たる
正解と解説を見る
正解: A
正解の理由
ページは、ページ レベルの圧縮を設定したヒープでページの圧縮が当たるのは、決まった場合だけだと書く。その1つが、ALTER TABLE ... REBUILD に PAGE 圧縮のオプションを付けてテーブルを作り直す場合である。DML の一部としてヒープに割り当てられた新しいページは、ヒープを作り直すまで PAGE 圧縮を使わない。毎晩 INSERT INTO ... SELECT で足した行のページは、作り直すことで PAGE 圧縮が当たる。
違う選択肢
「バッチの INSERT INTO ... SELECT に WITH (TABLOCK) を付ける。非クラスター化インデックスはそのまま残してよい」… ページは、INSERT INTO ... WITH (TABLOCK) で入れた行がページの圧縮を受けるのは、テーブルに非クラスター化インデックスが無い場合だと書く。LogData には非クラスター化インデックスが1つあるので、この条件を満たさない。
「非クラスター化インデックスを PAGE 圧縮で作り直す。ヒープの新しいページにも同じ圧縮が当たる」… ページは、DML の一部としてヒープに割り当てられた新しいページは、ヒープを作り直すまで PAGE 圧縮を使わないと書く。インデックスを作り直しても、ヒープそのものは作り直されない。
「何もしない。ヒープのページがいっぱいになった時点で、新しいページにも PAGE 圧縮が当たる」… ページは、DML の一部としてヒープに割り当てられた新しいページは、ヒープを作り直すまで PAGE 圧縮を使わないと書く。作り直すには、圧縮を外して付け直すか、クラスター化インデックスを作って消す。
押さえどころ
ヒープの圧縮の設定を変えると、ヒープの行の新しい場所を指すように、テーブルのすべての非クラスター化インデックスを作り直す必要がある。行やページの圧縮は、オンラインでもオフラインでも有効・無効にでき、ヒープの圧縮をオンラインで有効にする処理は1つのスレッドで動く。
Azure Database Administrator Associate(DP-300)の演習アプリ(無料10問・全問は解錠で)へ