トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
Oracleキーワードから学ぶ、逆引き! SQL Server入門
文=株式会社CSK 教育サービス事業部
第4回
アーキテクチャ編(2) スペシャルキーワード
セグメント/エクステント/データブロック

セグメント


Oracle

Oracle Serverの「セグメント」は、データベース内の1つのオブジェクトの格納空間です。1つのセグメントは必ず1つの表領域内に格納されますが、これを物理的に言えば、セグメントは表領域を構成するデータファイルに格納されることになります。表領域にデータファイルが複数ある場合は、「エクステント」の動的拡張機能によって各ファイルにエクステントが交互に割り当てられ、データが格納されます。

たとえば、社員表を表領域Aに格納する設定で作成します。表領域Aにファイル1とファイル2があるとき、社員表はファイル1のエクステントを使い切るとファイル2のエクステントを作成し、書き込みをおこないます。このとき、ファイルの残りサイズなどは考慮しないエクステント割り当てが行われます。


Oracle

SQL Serverには、セグメントのような、データベース内のオブジェクトの空間を指す特別な言葉はありません。オブジェクトは空間も含めてオブジェクトと呼びます。オブジェクトはOracle Serverと同じように、1つのファイルグループ(表領域に相当)を指定して格納します。物理的にはファイルグループを構成するデータァイルに格納されますが、Oracle Serverと異なり、ファイルグループにデータファイルが複数ある場合には複数のファイルが同時にいっぱいになるように、複数のファイルに均等にデータが書き込まれます。

たとえば、社員テーブルをファイルグループAに格納する設定で作成します。ファイルグループAにファイル1とファイル2が割り当てられており、残り容量がそれぞれ2Mバイトと6Mバイトあるとします。各ファイルが同時にいっぱいになるように書き込むわけですから、社員テーブルにデータをINSERTすると、ファイル1とファイル2には1:3の割合でエクステントを確保して書き込んでいくことになります。

このようにファイルグループにデータファイルを複数割り当てるのであれば、物理ディスクごとにデータファイルを1つ配置するとよいでしょう。そうすれば、シーケンシャルなデータアクセスの際にデータファイルごとに別々のスレッドが作成され、物理的にも複数ファイルに対して並列アクセスを行うことになるので、パフォーマンスを向上させることができます。ファイル1とファイル2のファイルサイズが1:3の例をご紹介しましたが、通常は同じサイズで作成します。同じサイズであれば、ディスクアクセスの負荷も均等になり、より効率的な負荷分散といえます。



エクステント/データブロック


Oracle

Oracle Serverのエクステントは、連続した「データブロック」を指します。データブロックはOracle ServerにおけるI/Oの最小単位です。エクステント内のデータブロックは、エクステントサイズによっていくつ連続するかが変わります。エクステントは必ず1つのセグメントに属しています。ですから、クラスタセグメントなど特殊な場合を除き、通常の表においては「社員表データと部署表データの両方を含むエクステント」というものは存在しません。また表作成時に表サイズを指定すると、空のエクステントも含めてセグメントの領域がまるごと確保されるので、見積もりを誤ると無駄な領域ができやすいとも言えます。


Oracle

SQL Serverのエクステントは8つの連続した「ページ」を指します。ページはOracle Serverのデータブロックに相当するディスクI/Oの最小単位ですが、サイズは8Kバイト固定です。SQL Serverのエクステントは64Kバイト(8Kバイト×8ページ)固定ですので、Windowsオペレーティングシステムに最適に設計された固定長であり、高速にデータベースアクセスできるのです。SQL Serverのエクステントには以下のものがあります。

●単一エクステント 1つのオブジェクトのデータのみを含む
●混合エクステント エクステント内の各ページを別々のオブジェクトが使用できる

テーブルを作成すると、データの最初の8ページ分は混合エクステントから領域確保されます。8ページより大きくなると、単一エクステントが確保されるようになります。この機能のおかげで、小さなテーブルは最初から大きな領域を確保せずに済みます。

Oracle Serverでは表領域やセグメントの割り当て時にエクステントの大きさをどのように設定するか頭を悩ます管理者の方もいらっしゃると思いますが、SQL Serverでは管理者はこのエクステントサイズの設定作業から解放されます。





・ 第1回 基本用語編:データベースオブジェクト
・ 第2回 ユーティリティ編:SQL*Plus
・ 第3回 アーキテクチャ編(1):インスタンスとデータベース
・ 第4回 アーキテクチャ編(2):セグメント/エクステント/データブロック
・ 第5回 アーキテクチャ編(3):索引
・ 第6回 プログラミング編:カーソル
・ 第7回 トランザクション/ロック編:読み取り一貫性
・ 第8回 バックアップとリカバリ編:スタンバイ・データベース
・ 第9回 ユーザー管理編:ロール
・ 第10回 パフォーマンスチューニング編:EXPLAIN PLAN(実行プランの表示)


著者プロフィール
株式会社CSK 教育サービス事業部
http://www.cskedu.com/
OracleとSQL Server、それぞれのトレーニングコースを担当するトレーナー3名体制で執筆しています。メンバーは、金子真由美、浦山裕恭、浅見淳子。
今回の執筆担当
金子真由美(KANEKO, Mayumi)
マイクロソフト認定トレーナーとして、SQL Serverを中心にトレーニングを担当しています。Oracleを使用したシステム開発の経験を活かし、OracleやDB2などの動きを踏まえたSQL Serverのトレーニングや執筆を行っています。忙しい毎日ですが、「緑の中での白い玉打ち」だけはやめられません。

← 特集!DBバイリンガル 目次

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.