関係データベースを利用しているシステムの性能を改善したい。問題点とその解決策に関する記述のうち、適切なものはどれか。
ア:SQL文を実行したところ、インデックスを利用できないアクセスパスによる全件検索が発生したので、データベースの再編成を行った。
イ:アクセスの集中によってI/O待ち時間が増加したので、データベースを複数のディスクに分割した。
ウ:ある特定の行だけにアクセスが集中していることが分かったので、インデックスの再設定を行った。
エ:長期間の運用で、更新、追加によってオーバフロー領域に配置されるデータが多くなってきたので、インデックスを追加した。
答:イ
ア:適切ではない。全件検索が発生した場合には、適切なインデックスを設定することが必要となる。
イ:適切である。データベースを複数のディスクに分割することで、入出力の並行処理が可能になりI/O待ち時間を短出することができる。
ウ:適切ではない。特定の行に対するアクセスの集中に関して、インデックスの設定は関係がない。
エ:適切ではない。オーバフロー領域にデータが配置されるようになった場合は、データベースの再編成を行う必要がある。
SQLとは
■リレーショナルデータベース(関係データベース)においてデータの操作や定義を行なうための言語。
■シークェルと読まれることもある。
■ANSI(アメリカ規格協会)やISO(国際標準化機構)、JIS(日本工業規格)によって規格化され、リレーショナルデータベースの事実上の標準として位置づけられている。
■SQLは大きく分けてデータ操作言語(DML)、データ定義言語(DDL)、データ制御言語(DCL)の3つに分類することができる。
□データ操作言語(DML:Data Manipulation Language)は、データの検索や更新、追加、削除などを行う。
□データ定義言語(DDL:Data Definition Language)は、テーブルやユーザの作成、変更、削除などを行う。
□データ制御言語(DCL:Data Control Language)は、処理の確定や取消、ユーザ権限の作成や削除などを行う。
インデックス(index)とは
■データベースの「索引(インデックス)」となるデータのこと。
■データベースの検索や並べ替えの処理能力を向上させるために、一般的に用いられている。
■データベースを検索する場合、レコードを先頭から順番に探していくと時間がかかり過ぎる。しかし「索引(インデックス)」を利用すると、目的のレコードを効率的に見つけることができ、検索や並び替えの作業を大幅に高速化することができる。
■テーブルが小さい場合やデータの更新頻度が高い場合など、データの量や内容によってはインデックスが効率を低下させてしまうことがある。
アクセスパス(access path)とは
■データベース上のデータにたどり着くまでのアクセス経路のこと。
■例えばデータを検索する場合、インデックスが設定されていない場合は直接データ部へアクセスするが、インデックスが設定されている場合は、索引部を経由してデータ部へアクセスすることになる。
データベースの再編成とは
■データの内容を保ったまま、データベースの記憶編成を変更すること。
■長期間の運用により発生した領域の断片化(フラグメント化)や記憶効率の低下、アクセス速度の低下など不具合を解消する。
I/O(input/output)とは
■入力と出力のこと。
■CPUは、メモリなどの外部デバイスからデータを取り出して、データ処理を行い、結果をメモリなどの外部デバイスに書き戻す。このような、情報を入力し(Input)、データを処理し、出力する(Output)という入出力処理を総称してI/Oと呼ぶ。
オーバフロー領域(overflow area)とは
■あふれ領域のこと。
■データベースにおいて、本来の領域に納まりきらない(あふれた)データを記録するための領域。
■オーバフロー領域に配置されるデータが多くなるとデータ領域の検索だけではなく、あふれ出した領域まで検索が行われるために効率が低下する。このような場合にはデータベースの再編成を行う必要がある。


